当我要转柱样numpy的阵列一样,如何降低1XN维列表1名维列表
a = array([[1],
[2],
[3]])
的行状numpy的阵列,这是我期待像,
b = array([1,2,3])
但是,当我转一个,我只是得到一个1×3维数组,
>>> a.transpose()
>>> array([[1,2,3]])
我不知道如何解决它。
当我要转柱样numpy的阵列一样,如何降低1XN维列表1名维列表
a = array([[1],
[2],
[3]])
的行状numpy的阵列,这是我期待像,
b = array([1,2,3])
但是,当我转一个,我只是得到一个1×3维数组,
>>> a.transpose()
>>> array([[1,2,3]])
我不知道如何解决它。
如果您使用的是numpy
,numpy.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])
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]
我明白了。但我很抱歉,我没有清楚地表明我的数据类型实际上是numpy数组。所以也许一个numpy方法更有效。无论如何,你的答案是有价值的。 –
@randomir OP说*转置*,听起来像是一个颠倒的术语。 – Psidom
@randomir当然。当我说*听起来像*时,我不确定。 - – Psidom
@我很抱歉,这个问题没有明确声明,但是,我只是在谈论一个数组。所有提供的方法都可行,而我只是使用a.flatten()来解决这个问题。 –