从 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 数组中删除括号的主要内容,如果未能解决你的问题,请参考以下文章

如何从数组元素中删除括号

如何从 JSON 数组数据输出中删除大括号 []?

将带括号的字符串转换为numpy数组

如何从数组中删除开始/结束方括号

Bash:awk从数组项中删除括号

numpy:矩阵定义与索引