我使用Python和NumPy,在“转置”方面有一些问题:
import numpy as np
a = np.array([5,4])
print(a)
print(a.T)
调用a.T
不会转置数组。例如,如果a
是[[],[]]
,那么它的转置是正确的,但我需要[...,...,...]
的转置。
发布于 2011-05-11 02:36:44
它完全按照它应该的方式工作。一维数组的转置仍然是一维数组!(如果你习惯于matlab,它根本就没有一维数组的概念。Matlab的“一维”数组是二维的。)
如果你想把一维向量转换成二维数组,然后转置它,只需要用np.newaxis
(或者None
,它们是一样的,newaxis
只是更具可读性)对它进行切片。
import numpy as np
a = np.array([5,4])[np.newaxis]
print(a)
print(a.T)
一般来说,你永远不需要担心这一点。如果你只是出于习惯,添加额外的维度通常不是你想要的。在进行各种计算时,Numpy会自动广播一维阵列。通常不需要区分行向量和列向量(它们都不是向量。它们都是2D的!)当你只想要一个向量的时候。
发布于 2012-05-11 14:12:55
使用两个括号对而不是一个。这将创建一个可以转置的二维数组,这与使用一个括号对时创建的一维数组不同。
import numpy as np
a = np.array([[5, 4]])
a.T
更详细的示例:
>>> a = [3,6,9]
>>> b = np.array(a)
>>> b.T
array([3, 6, 9]) #Here it didn't transpose because 'a' is 1 dimensional
>>> b = np.array([a])
>>> b.T
array([[3], #Here it did transpose because a is 2 dimensional
[6],
[9]])
使用numpy的shape
方法查看这里发生了什么:
>>> b = np.array([10,20,30])
>>> b.shape
(3,)
>>> b = np.array([[10,20,30]])
>>> b.shape
(1, 3)
发布于 2016-04-04 22:58:10
适用于一维阵列的
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
。
https://stackoverflow.com/questions/5954603
复制相似问题