2015-04-22 58 views
0

我有一個'row'向量作爲numpy ndarray投射。我只是想將它作爲'列'向量(我不關心類型,只要它與matplotlib兼容)。下面是我想要一個例子:1D的開關尺寸ndarray

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中的轉置不會對一維數組做任何事情。但這是一維數組嗎?

回答

2

轉置數組不會發生。編寫a.T創建了數組a的轉置視圖,但由於沒有爲其分配變量,因此該視圖會立即丟失。 a保持不變。

你需要寫a = a.T的名稱a綁定到轉置:

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

在您的例子a確實是一個二維數組。轉置1D陣列(形狀爲(n,))完全不會改變該陣列。

0

除非您試圖強制執行廣播操作,否則您可能不想要或不需要奇異維度。

http://wiki.scipy.org/NumPy_for_Matlab_Users

你可以把秩1數組作爲行或列向量。 dot(A,v)v視爲列向量,而dot(v,A)v視爲行向量。 這可以節省您不得不輸入大量的轉置。

0

你可以改變'就地'的形狀,它與(1,4)的a.T相同,但是看到E先生的評論是否需要。即

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