我使用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是[[],[]],那么它的转置是正确的,但是我需要[…,…,…]的转置。
当前回答
它的工作原理和预期的完全一样。一维数组的转置仍然是一维数组!(如果你习惯了matlab,它基本上没有一维数组的概念。Matlab的“1D”数组是2D的。)
如果你想把你的一维向量变成一个二维数组,然后转置它,只需用np对它进行切片。newaxis(或None,它们是一样的,只是newaxis更可读)。
import numpy as np
a = np.array([5,4])[np.newaxis]
print(a)
print(a.T)
一般来说,你不需要担心这个。如果你只是出于习惯,添加额外的维度通常不是你想要的。Numpy会在进行各种计算时自动广播一个1D数组。通常不需要区分行向量和列向量(它们都不是向量)。它们都是2D的!)当你只想要一个向量时。
其他回答
有一个方法没有在答案中描述,但在文档中描述了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)
这(在我看来)比使用新蜡更好。
对于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。
你可以把一个现有的向量转换成一个矩阵,方法是用一组额外的方括号把它括起来。
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
numpy中的函数名为column_stack。
>>>a=np.array([5,4])
>>>np.column_stack(a)
array([[5, 4]])
它的工作原理和预期的完全一样。一维数组的转置仍然是一维数组!(如果你习惯了matlab,它基本上没有一维数组的概念。Matlab的“1D”数组是2D的。)
如果你想把你的一维向量变成一个二维数组,然后转置它,只需用np对它进行切片。newaxis(或None,它们是一样的,只是newaxis更可读)。
import numpy as np
a = np.array([5,4])[np.newaxis]
print(a)
print(a.T)
一般来说,你不需要担心这个。如果你只是出于习惯,添加额外的维度通常不是你想要的。Numpy会在进行各种计算时自动广播一个1D数组。通常不需要区分行向量和列向量(它们都不是向量)。它们都是2D的!)当你只想要一个向量时。