python 切换一维ndarray的维数

ia2d9nvy  于 2023-01-16  发布在  Python
关注(0)|答案(3)|浏览(118)

我有一个'row'向量转换为numpy ndarray。我只想把它转换为'column'向量(我不太关心类型,只要它与matplotlib兼容)。下面是我尝试的一个例子:

import numpy as np

a = np.ndarray(shape=(1,4), dtype=float, order='F')
print(a.shape)
a.T #I think this performs the transpose?
print(a.shape)

输出如下所示:

(1, 4)
(1, 4)

我希望得到:

(1, 4)
(4, 1)

有人能给我指出正确的方向吗?我已经看到numpy中的转置对1D数组没有任何作用。但是这是1D数组吗?

55ooxyrt

55ooxyrt1#

转置一个数组并不会在原处发生。写a.T会创建一个转置数组a的视图,但是这个视图会立即丢失,因为没有给它赋值。a保持不变。
你需要写a = a.T来把名字a绑定到转置:

>>> a = a.T
>>> a.shape
(4, 1)

在你的例子中a实际上是一个2D数组。转置一个1D数组(形状为(n,))根本不会改变那个数组。

cuxqih21

cuxqih212#

你可以在适当的地方改变形状,这和(1,4)的a.T是一样的,但是看E先生的评论是否需要。

...
print(a.shape)
a.shape = (4, 1)
print(a.shape)
ckocjqey

ckocjqey3#

您可能不想要或不需要奇异维,除非您试图强制执行广播操作。
Link
你可以把秩为1的数组当作行向量或列向量。dot(A,v)v当作列向量,而dot(v,A)v当作行向量,这样你就保存输入很多转置。

相关问题