【问题标题】:Removing brackets from a numpy array从 numpy 数组中删除括号
【发布时间】: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

标签: python python-3.x numpy


【解决方案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]
    

    【讨论】:

      猜你喜欢
      • 2014-01-28
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      相关资源
      最近更新 更多