【问题标题】:Transform numpy ndarray from a column list to row list将 numpy ndarray 从列列表转换为行列表
【发布时间】:2015-09-16 16:27:19
【问题描述】:

我有一个 ndarray,它的形状是 (5,2)。如何将其更改为行列表,而不是列列表。 这是代码

poly
array([['610.0', '1150.0'],
   ['675', '1150'],
   ['675', '1215'],
   ['610', '1215'],
   ['610', '1150']], 
  dtype='|S32')
shape(poly)
 (5,2)
poly.tolist()
 [['610.0', '1150.0'],
 ['675', '1150'],
 ['675', '1215'],
 ['610', '1215'],
 ['610', '1150']]

但是,我想要的是

 [['610.0', '1150.0'],['675', '1150'],['675', '1215'],['610', '1215'],['610', '1150']]

我怎么能得到它?

【问题讨论】:

  • 这就是困难所在。在我的问题中,poly 是一个形状为 (5,2) 的 ndarray。 poly.tolist() 是 (5,1) 的列列表;列表的每个元素都是一个 (1,2) 数组。我想要的也是一个列表,而是一个大小为 (1, 5) 的行列表。列表的每个元素仍然是 (1, 2) 数组。
  • 尝试 poly.tolist() 在我的机器上给出了你想要的输出。不确定行列表/列列表是什么意思?
  • 区别不只是ipython提供的特殊repr吗?
  • 没有行列表或列列表之类的东西。区别纯粹是显示格式的问题。

标签: python list numpy multidimensional-array transpose


【解决方案1】:

您可以使用: 方法:

ndarray.T
ndarray.transpose()

在你的情况下:

poly.T

poly.transpose()

使用这个:

import numpy as np
poly=np.array([['610.0', '1150.0'],
   ['675', '1150'],
   ['675', '1215'],
   ['610', '1215'],
   ['610', '1150']], 
  dtype='|S32')

print("poly", poly)

print()

#print(poly.shape())

print("poly.tolist()", poly.tolist())

#print(poly.T)
print()

print("poly.transpose()", poly.transpose())

【讨论】:

  • 我试过这个方法,但我得到的是错误:TypeError: 'numpy.ndarray' object is not callable
  • 其实我可以用poly.transpose(),但是我得到的是array([['610.0', '675', '675', '610', '610'], ['1150.0', '1150', '1215', '1215', '1150']], dtype='|S32'),这不是我需要的。
  • 你只有 2 个结果:1. [['610.0', '1150.0'],['675', '1150'],['675', '1215'],['610 ', '1215'],['610', '1150']] 或 2. [['610.0','675', '675','610','610'],['1150.0', '1150 ','1215','1215','1150']]。第一个不需要 transpose(),只需要第二个。
  • 感谢阿道夫的耐心等待。我的两个输出似乎相同,但是当我输入ImageDraw.Draw(img).polygon(poly) 时出现错误。我需要检查问题出在哪里。非常感谢!
  • 注意poly.T是一个属性,而不是一个方法,所以你只需要使用poly.T而不是poly.T()
猜你喜欢
  • 2015-08-07
  • 2021-08-09
  • 2017-10-05
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 2019-05-09
  • 2019-06-11
相关资源
最近更新 更多