从 numpy 数组中删除括号
Posted
技术标签:
【中文标题】从 numpy 数组中删除括号【英文标题】:Removing brackets from a numpy array 【发布时间】:2018-01-13 00:30:54 【问题描述】:假设我有以下数组 -
X = np.array([[0, 1,5], [3, 7,6], [11,3,2]])
然后我做 -
X[1,np.delete(range(3),0)]
这给了 -
array([7, 6])
基本上,我只想留下 -
7, 6
如果可能的话,用逗号分隔(不是字符串)?
谢谢!
【问题讨论】:
float form (not string)
是什么意思?你想要一个包含两个浮点数的列表吗?因为打印看起来像[7.0, 6.0]
。这就是你想要的吗?
您将数据结构的字符串表示与数据结构实际表示的内容混合在一起。如果您想对数据进行数学运算,那么您拥有的数组就可以了。如果您想将7, 6
打印到屏幕或文件或其他东西上,有各种数组打印和字符串操作工具可供您使用。
您需要意识到的一件事是您的数组中没有括号和没有逗号。它的repr
表示中有括号和逗号。如果要打印数组中数据的不同字符串表示形式,则需要更改打印逻辑,而不是数组。
不,不可能。
7, 6
是一种不同的 Python 数据结构,称为 tuple
。
【参考方案1】:
您从一个二维数组开始,然后选择一个部分。结果是一维数组:
In [83]: X = np.array([[0, 1,5], [3, 7,6], [11,3,2]])
In [84]: X
Out[84]:
array([[ 0, 1, 5],
[ 3, 7, 6],
[11, 3, 2]])
In [85]: y = X[1,1:]
In [86]: y
Out[86]: array([7, 6])
可以以多种方式显示。默认数组str
显示使用方括号并且没有逗号。 repr
显示包括 array
名称
In [87]: str(y)
Out[87]: '[7 6]'
列表显示仍然有括号:
In [88]: y.tolist()
Out[88]: [7, 6]
In [98]: tuple(y)
Out[98]: (7, 6)
我不知道任何显示为以逗号分隔且没有某种括号的数字的内置结构。
但是如果你将每个元素转换成一个字符串,并用,
连接它们,你就会得到你想要的纯字符串:
In [89]: ', '.join([str(i) for i in y])
Out[89]: '7, 6'
我们也可以使用%
格式化数组。这就是np.savetxt
在将数组的行写入文件时所做的事情。
In [91]: '%d, %d'%tuple(y)
Out[91]: '7, 6'
In [97]: ', '.format(*y)
Out[97]: '7, 6'
所有这一切的基础是两件事:
对象是什么——数组、列表、元组、字符串
该对象的显示效果如何。所有对象都有一个str
方法和一个repr
显示方法。但始终,对象及其显示方法之间存在区别。不要把一个误认为另一个。
【讨论】:
【参考方案2】:尝试将其转换为列表:
>>> X[1,np.delete(range(3),0)].tolist()
[7, 6]
【讨论】:
以上是关于从 numpy 数组中删除括号的主要内容,如果未能解决你的问题,请参考以下文章