我使用Python和NumPy,在“转置”方面有一些问题:

import numpy as np
a = np.array([5,4])
print(a)
print(a.T)

调用a.T并不是变换数组。如果a是[[],[]],那么它的转置是正确的,但是我需要[…,…,…]的转置。


当前回答

我只是巩固上面的帖子,希望它能帮助别人节省一些时间:

下面的数组有(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)

其他回答

你只能对2D数组进行转置。您可以使用numpy。矩阵来创建一个2D数组。这迟了三年,但我只是在可能的解决方案中添加了一些:

import numpy as np
m = np.matrix([2, 3])
m.T

而是使用arr[:,None]创建列向量

我只是巩固上面的帖子,希望它能帮助别人节省一些时间:

下面的数组有(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)

对于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。

你可以使用np.expand_dims()函数来调换一个1-D数组(平面数组),就像你的例子中那样:

>>> a = np.expand_dims(np.array([5, 4]), axis=1)
array([[5],
       [4]])

Np.expand_dims()将为所选轴添加一个维度。在本例中,我们使用axis=1,它增加了一个列维度,有效地调换了原始平面数组。