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