回答

1

可以使用transpose操作做到這一點:

例子:

In [2]: a = np.array([[1,2], [3,4], [5,6]]) 
In [5]: np.shape(a) 
Out[5]: (3, 2) 

In [6]: a_trans = a.transpose() 
In [8]: np.shape(a_trans) 
Out[8]: (2, 3) 
In [7]: a_trans 
Out[7]: 
array([[1, 3, 5], 
     [2, 4, 6]]) 

注意原數組a仍將保持不變。轉置操作只會複製並轉置它。

+1

謝謝!我對numpy很陌生,所以這真的很有幫助。 –

0

要將行向量轉換爲列向量,Python中的可能很重要,例如,使用廣播

import numpy as np 

def colvec(rowvec): 
    v = np.asarray(rowvec) 
    return v.reshape(v.size,1) 

colvec([1,2,3]) * [[1,2,3], [4,5,6], [7,8,9]] 

乘以第一行1,第二行由2和第三行乘3:

array([[ 1, 2, 3], 
     [ 8, 10, 12], 
     [ 21, 24, 27]]) 

相反,試圖使用輸入作爲列向量矩陣:

np.asmatrix([1, 2, 3]).transpose() * [[1,2,3], [4,5,6], [7,8,9]] 

失敗,出現錯誤ValueError: shapes (3,1) and (3,3) not aligned: 1 (dim 1) != 3 (dim 0)

0

我們可以簡單地使用numpy的的重塑功能:

a=np.array([[1,2,3,4]]) 
a: 
array([[1, 2, 3, 4]]) 

a.shape 
(1,4) 
b=a.reshape(-1,1) 
b: 
array([[1], 
     [2], 
     [3], 
     [4]]) 

b.shape 
(4,1) 
+0

如果你能解釋代碼的功能,這將是一個更好的答案。 – Nae

0

這個人是一個很好的問題。

一些我編做到這一點的方法是:

>> import numpy as np 
 
>> a = np.array([1, 2, 3], [2, 4, 5]) 
 
>> a 
 
>> array([[1, 2], 
 
     [2, 4], 
 
     [3, 5]])

另一種方式來做到這一點:

>> a.T 
 
>> array([[1, 2], 
 
     [2, 4], 
 
     [3, 5]]) 
 
    

另一個辦法做到這一點是:

>> a.reshape(a.shape[1], a.shape[0]) 
 
>> array([[1, 2], 
 
     [3, 2], 
 
     [4, 5]]) 
 
    

我已經用在所有的這些問題,一個2維數組,真正的問題出現時,有要一維行向量優雅地列出。

與NumPy的重塑具有這樣你通過維度你想(的行或列數)的一個功能,numpy的可以自己計算出其他尺寸,如果你傳給其他維度-1

>> a.reshape(-1, 1) 
 
>> array([[1], 
 
     [2], 
 
     [3], 
 
     [2], 
 
     [4], 
 
     [5]]) 
 
     
 
>> a = np.array([1, 2, 3]) 
 
>> a.reshape(-1, 1) 
 
>> array([[1], 
 
     [2], 
 
     [3]]) 
 
     
 
>> a.reshape(2, -1) 
 

 
>> ValueError: cannot reshape array of size 3 into shape (2,newaxis)

所以,你可以給你一維的選擇,而不只要(m * n)/your_choice是一個整數擔心其他維度。

如果你想知道到更多關於這個-1頭: What does -1 mean in numpy reshape?

注:所有這些操作都返回一個新的數組並且不修改原始數組。