2015-06-30 44 views
-1

我有一个ndarray,其形状是(5,2)。如何将其更改为行列表,而不是列列表。 下面是代码将numpy ndarray从列列表转换为行列表

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']] 

我怎么能拿呢?

+0

这就是困难。在我的问题中,'poly'是一个形状为(5,2)的ndarray。 'poly.tolist()'是(5,1)的列表列表;列表中的每个元素都是(1,2)数组。我想要的也是一个列表,但它的大小是(1,5)的行列表。列表中的每个元素仍然是(1,2)数组。 –

+5

尝试poly.tolist()给出我的机器上所需的输出。不确定行列表/列列表是什么意思? – Geotob

+1

只不过是'ipython'提供的特殊'repr'? – o11c

回答

0

您可以使用: 方法:

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()) 
+0

我试过这个方法,但我得到的是错误:'TypeError:'numpy.ndarray'对象不可调用' –

+0

事实上,我可以使用'poly.transpose()',但我得到的是'array([ ['610.0','675','675','610','610'], ['1150.0','1150','1215','1215','1150']], dtype = | S32')',这不是我所需要的。 –

+0

您只有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']]。对于第一个你不需要转置(),只需要第二个。 –