Python 如何将1xn维列表缩减为1维列表
当我想转置一个列,比如numpy数组Python 如何将1xn维列表缩减为1维列表,python,data-manipulation,Python,Data Manipulation,当我想转置一个列,比如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数组,则需
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])
输出
[1, 2, 3]
解释
使用
更新 或者您也可以这样做,(但我建议使用列表理解,因为它可以在不增加函数调用开销的情况下进行所有内联操作)
@randomir OP说的是转置,听起来像一个名词。@randomir当然。当我说听起来像的时候,我不确定很抱歉,这个问题并没有明确提出,但是的,我只是在说一个numpy数组。您提供的所有方法都是可行的,而我只是使用a.flatte()来解决这个问题。我明白了。但很抱歉,我没有明确说明我的数据类型实际上是numpy数组。所以也许numpy方法更有效。不管怎样,你的答案很有价值。
[1, 2, 3]
[
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]