繁体   English   中英

一维ndarray的开关尺寸

[英]Switch dimensions of 1D ndarray

我有一个“行”向量强制转换为numpy ndarray。 我只想将其设为“列”向量(只要与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中的转置对一维数组没有任何作用。 但这是一维数组吗?

转置数组未就位。 编写aT会创建数组a的转置视图,但是由于未分配任何变量,因此该视图立即丢失。 a保持不变。

您需要编写a = aT来将名称a绑定到转置:

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

在您的示例中, a实际上是2D数组。 转置一维数组(形状为(n,) )根本不会更改该数组。

除非您试图强制执行广播操作,否则您可能不希望或不需要奇异的尺寸。

http://wiki.scipy.org/NumPy_for_Matlab_Users

您可以将等级1数组视为行向量或列向量。 dot(A,v)v视为列向量,而dot(v,A)则将v视为行向量。 这样可以节省您键入很多移调的麻烦。

您可以更改“就地”形状,该形状与(1,4)的aT相同,但请查看E先生的评论是否需要。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM