2017-10-08 49 views
-4

当我要转柱样numpy的阵列一样,如何降低1XN维列表1名维列表

a = array([[1], 
    [2], 
    [3]]) 

的行状numpy的阵列,这是我期待像,

b = array([1,2,3]) 

但是,当我转一个,我只是得到一个1×3维数组,

>>> a.transpose() 
>>> array([[1,2,3]]) 

我不知道如何解决它。

回答

0

如果您使用的是numpynumpy.transpose不会更改数组的维数; a仍然是一个二维数组,如果它是最初的二维数组,你需要压扁它从2d减少它1d

import numpy as np 
a = [[1], 
    [2], 
    [3]] 

np.ravel(a) 
#array([1, 2, 3]) 

np.squeeze(a) 
#array([1, 2, 3]) 

np.array(a)[:,0] 
# array([1, 2, 3]) 
+0

@randomir OP说*转置*,听起来像是一个颠倒的术语。 – Psidom

+0

@randomir当然。当我说*听起来像*时,我不确定。 - – Psidom

+1

@我很抱歉,这个问题没有明确声明,但是,我只是在谈论一个数组。所有提供的方法都可行,而我只是使用a.flatten()来解决这个问题。 –

0
a = [[1], 
    [2], 
    [3]] 
b=[i for sl in a for i in sl] 
print(b) 

输出

[1, 2, 3] 

解释
使用list comprehension

[ 
i    #Take as a member of the final list 
for sl in a #iterate over all sublists in a 
for i in sl #iterate over each i in sublist 
] 

UPDATE

OR你可以做,(但因为它做的一切在线,无开销的函数调用,我建议列表理解)

b=transposed_list[0] 
+0

我明白了。但我很抱歉,我没有清楚地表明我的数据类型实际上是numpy数组。所以也许一个numpy方法更有效。无论如何,你的答案是有价值的。 –