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

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

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


当前回答

正如上面提到的一些评论,1D数组的转置是1D数组,所以转置1D数组的一种方法是将数组转换为如下的矩阵:

np.transpose(a.reshape(len(a), 1))

其他回答

正如上面提到的一些评论,1D数组的转置是1D数组,所以转置1D数组的一种方法是将数组转换为如下的矩阵:

np.transpose(a.reshape(len(a), 1))

numpy中的函数名为column_stack。

>>>a=np.array([5,4])
>>>np.column_stack(a)
array([[5, 4]])

要将1d数组“转置”为2d列,可以使用numpy.vstack:

>>> numpy.vstack(numpy.array([1,2,3]))
array([[1],
       [2],
       [3]])

它也适用于香草列表:

>>> numpy.vstack([1,2,3])
array([[1],
       [2],
       [3]])

—>列/行矩阵:

>>> a=np.array([1,2,4])
>>> a[:, None]    # col
array([[1],
       [2],
       [4]])
>>> a[None, :]    # row, or faster `a[None]`
array([[1, 2, 4]])

正如@joe-kington所说,你可以用np替换None。新蜡是为了可读性。

你可以把一个现有的向量转换成一个矩阵,方法是用一组额外的方括号把它括起来。

from numpy import *
v=array([5,4]) ## create a numpy vector
array([v]).T ## transpose a vector into a matrix

Numpy还有一个矩阵类(参见array vs. matrix)…

matrix(v).T ## transpose a vector into a matrix