【发布时间】:2017-10-08 20:22:42
【问题描述】:
当我想转置一个类似列的numpy数组时,比如,
a = array([[1],
[2],
[3]])
到一个类似行的 numpy 数组,我期望它是这样的,
b = array([1,2,3])
但是当我转置 a 时,我只得到一个 1x3 维数组,
>>> a.transpose()
>>> array([[1,2,3]])
我不知道如何解决它。
【问题讨论】:
当我想转置一个类似列的numpy数组时,比如,
a = array([[1],
[2],
[3]])
到一个类似行的 numpy 数组,我期望它是这样的,
b = array([1,2,3])
但是当我转置 a 时,我只得到一个 1x3 维数组,
>>> a.transpose()
>>> array([[1,2,3]])
我不知道如何解决它。
【问题讨论】:
如果你使用numpy,numpy.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])
【讨论】:
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]
【讨论】: