如何将1xn维列表减少到1维列表

时间:2017-10-08 20:22:42

标签: python data-manipulation

当我想转置一个像列一样的numpy数组时,比如,

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

到一个类似行的numpy数组,我期望它是,

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

但是当我转置一个时,我只得到一个1x3维数组,

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

我不知道如何修复它。

2 个答案:

答案 0 :(得分:0)

如果您使用numpynumpy.transpose不会更改数组的维数; a如果它是最初的2d数组,则仍然是2d数组,您需要将其展平以将其从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])

答案 1 :(得分: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
]

<强>更新

OR 你可以这样做,(但我会建议列表理解,因为它可以内联所有内容而无需函数调用的开销)

b=transposed_list[0]