如何将 1xn 维列表缩减为 1 维列表
How to reduce 1xn dimensional list to 1 dimensional list
当我想转置类似列的 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
减少到 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
]
更新
或你可以做到,(但我建议列表理解,因为它内联所有内容,没有函数调用的开销)
b=transposed_list[0]
当我想转置类似列的 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
减少到 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
]
更新
或你可以做到,(但我建议列表理解,因为它内联所有内容,没有函数调用的开销)
b=transposed_list[0]