>>> 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's shape 方法来查看此处发生的情况:
>>> b = np.array([10,20,30])
>>> b.shape
(3,)
>>> b = np.array([[10,20,30]])
>>> b.shape
(1, 3)
16条答案
按热度按时间kupeojn61#
它完全按照它的预期工作。一维数组的转置仍然是一维数组(如果你习惯了matlab,它基本上没有一维数组的概念。matlab的“1d”阵列是2d。)
如果你想把一维向量转换成二维数组,然后转置它,只需用
np.newaxis
(或None
,他们是一样的,newaxis
更具可读性)。不过,一般来说,你不必担心这一点。如果你只是出于习惯,添加额外维度通常不是你想要的。在进行各种计算时,numpy将自动广播1d数组。通常不需要区分行向量和列向量(它们都不是向量)。他们都是2d!)当你只需要一个向量的时候。
2skhul332#
使用两对支架,而不是一对。这将创建一个二维数组,该数组可以进行转置,与使用一对括号创建的一维数组不同。
更全面的例子:
使用numpy's
shape
方法来查看此处发生的情况:lo8azlld3#
对于一维阵列:
一旦您理解了这里的-1表示“需要多少行”,我发现这是“转置”数组的最可读的方式。如果数组的维数较高,只需使用
a.T
.shstlldc4#
您可以通过将现有向量 Package 在一组额外的方括号中,将其转换为矩阵。。。
numpy也有一个
matrix
类(请参见阵列与矩阵)。。。wztqucjr5#
numpy 1d数组-->列/行矩阵:
正如@joe kington所说,你可以取代
None
具有np.newaxis
为了可读性。pdkcd3nj6#
要将一维数组“转置”到二维列,可以使用
numpy.vstack
:它也适用于普通列表:
oknrviil7#
只能转置二维数组。你可以用
numpy.matrix
创建二维阵列的步骤。这已经晚了三年,但我只是在补充可能的解决方案:x6h2sr288#
改用
arr[:,None]
创建列向量的步骤n3ipq98p9#
另一个解决方案……:)
[1, 2, 4]
数组([[1]、[2]、[4]])
yks3o0rb10#
转置函数的基本作用是交换阵列的形状和步幅:
在1d numpy数组(秩1数组)的情况下,形状和跨步是1个元素元组,不能交换,这种1d数组的转置返回不变。相反,您可以转置“行向量”(形状的numpy数组)
(1, n)
)转换为“列向量”(形状的numpy数组)(n, 1)
). 要实现这一点,您必须首先将1d numpy数组转换为行向量,然后交换形状和步幅(转置)。下面是执行此操作的函数:例子:
当然,您不必这样做,因为您有一个1d阵列,您可以直接将其重塑为
(n, 1)
排列方式a.reshape((-1, 1))
或a[:, None]
. 我只是想演示如何转置数组。hec6srdp11#
我只是巩固了上面的帖子,希望它能帮助其他人节省一些时间:
下面的数组具有
(2, )
维,它是一个一维数组,有两种方法可以转置一维阵列:
用“np.newaxis”或无进行切片。!
其他的写作方式,以上没有
T
活动换行[]或使用np.matrix,意味着添加新维度。!
fcg9iug312#
转置
是
代码是:
或者简单的方法:
此链接可获取更多信息:http://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html
**转置一维数组将返回原始数组的不变视图。对于1d阵列,请尝试以下操作:
nmpmafwu13#
如上所述,1d数组的转置是1d数组,因此转置1d数组的一种方法是将数组转换为如下矩阵:
1qczuiv014#
中函数的名称
numpy
这是一个堆栈。ztyzrc3y15#
有一种方法未在答案中描述,但在文档中描述了该方法
numpy.ndarray.transpose
方法:对于1-d阵列,这没有影响,因为转置向量只是同一个向量。要将一维数组转换为二维列向量,必须添加额外的维度。np.atlest2d(a).t实现了这一点,a[:,np.newaxis]也实现了这一点。
我们可以做到:
哪个(imo)比使用更好
newaxis
.