1D ndarray的开关尺寸

时间:2015-04-22 20:31:18

标签: python arrays numpy

我有一个'行'矢量强制转换为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中的转置对一维数组没有任何作用。但这是一维阵列吗?

3 个答案:

答案 0 :(得分:2)

转置数组不会发生。编写a.T会创建数组a的转置视图,但此视图会立即丢失,因为没有为其分配变量。 a保持不变。

您需要编写a = a.T以将名称a绑定到转置:

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

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

答案 1 :(得分:0)

除非您试图强制进行广播操作,否则您可能不想要或不需要单一尺寸。

http://wiki.scipy.org/NumPy_for_Matlab_Users

  

您可以将rank-1数组视为行或列向量。 dot(A,v)   将v视为列向量,而dot(v,A)v视为行向量。   这可以节省您输入很多转座的费用。

答案 2 :(得分:0)

你可以改变'到位'的形状,这与(1)的a.T相同,但是看看E先生的评论是否需要。即。

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