我使用Python和NumPy,在“转置”方面有一些问题:
import numpy as np
a = np.array([5,4])
print(a)
print(a.T)
调用a.T并不是变换数组。如果a是[[],[]],那么它的转置是正确的,但是我需要[…,…,…]的转置。
我使用Python和NumPy,在“转置”方面有一些问题:
import numpy as np
a = np.array([5,4])
print(a)
print(a.T)
调用a.T并不是变换数组。如果a是[[],[]],那么它的转置是正确的,但是我需要[…,…,…]的转置。
当前回答
有一个方法没有在答案中描述,但在文档中描述了numpy. narray .transpose方法:
对于一维数组,这没有影响,因为转置向量就是相同的向量。要将1-D数组转换为2D列向量,必须添加一个额外维度。np.atleast2d (a)。T实现了这一点,就像a[:, np.newaxis]一样。
你可以这样做:
import numpy as np
a = np.array([5,4])
print(a)
print(np.atleast_2d(a).T)
这(在我看来)比使用新蜡更好。
其他回答
我只是巩固上面的帖子,希望它能帮助别人节省一些时间:
下面的数组有(2,)维数,它是一个一维数组,
b_new = np.array([2j, 3j])
有两种方法来转置一个1-D数组:
用“np”进行切片。或者没有。
print(b_new[np.newaxis].T.shape)
print(b_new[None].T.shape)
其他写法,以上不用T运算。!
print(b_new[:, np.newaxis].shape)
print(b_new[:, None].shape)
换行[]或使用np。矩阵,意味着增加一个新的维度。
print(np.array([b_new]).T.shape)
print(np.matrix(b_new).T.shape)
而是使用arr[:,None]创建列向量
正如上面提到的一些评论,1D数组的转置是1D数组,所以转置1D数组的一种方法是将数组转换为如下的矩阵:
np.transpose(a.reshape(len(a), 1))
要将1d数组“转置”为2d列,可以使用numpy.vstack:
>>> numpy.vstack(numpy.array([1,2,3]))
array([[1],
[2],
[3]])
它也适用于香草列表:
>>> numpy.vstack([1,2,3])
array([[1],
[2],
[3]])
对于1D数组:
a = np.array([1, 2, 3, 4])
a = a.reshape((-1, 1)) # <--- THIS IS IT
print a
array([[1],
[2],
[3],
[4]])
一旦你理解了-1在这里意味着“需要多少行”,我发现这是最易读的“转置”数组的方式。如果你的数组是高维的,简单地使用a.T。