2013-03-28 85 views
1

如何在python中表示列矩陣和行矩陣?python中的列矩陣表示

A =[1,2,3,4] 

1 
2 
3 
4 
+0

這取決於你確切需要什麼,試着向我們解釋爲什麼你需要這個。 Python中的列表總是像行矩陣,但使用不同的數據類型,你可以擁有你所需要的。 – 2013-03-28 06:42:51

+0

我有2個矩陣一行矩陣和其他列矩陣。我想乘這兩個。 – diva 2013-03-28 06:45:48

+0

檢查這個http://stackoverflow.com/questions/10508021/matrix-multiplication-in-python – 2013-03-28 06:47:08

回答

5

矩陣是二維結構。在普通的Python中,矩陣的最自然的表示形式是列表列表。

所以,你可以寫一個行矩陣爲:

[[1, 2, 3, 4]] 

,寫一個列矩陣爲:

[[1], 
[2], 
[3], 
[4]] 

這很好地延伸到MXN矩陣,以及:

[[10, 20], 
[30, 40], 
[50, 60]] 

有關如何開發af的示例,請參閱matfunc.py純Python中的矩陣包。 它的文檔是here

這裏是用列表中,列出了表示在普通的Python做矩陣乘法的採空例如:

>>> from pprint import pprint 
>>> def mmul(A, B): 
     nr_a, nc_a = len(A), len(A[0]) 
     nr_b, nc_b = len(B), len(B[0]) 
     if nc_a != nr_b: 
      raise ValueError('Mismatched rows and columns') 
     return [[sum(A[i][k] * B[k][j] for k in range(nc_a)) 
       for j in range(nc_b)] for i in range(nr_a)] 

>>> A = [[1, 2, 3, 4]] 
>>> B = [[1], 
     [2], 
     [3], 
     [4]] 

>>> pprint(mmul(A, B)) 
[[30]] 

>>> pprint(mmul(B, A), width=20) 
[[1, 2, 3, 4], 
[2, 4, 6, 8], 
[3, 6, 9, 12], 
[4, 8, 12, 16]] 

正如另一位受訪者提到,如果你認真做基質的工作,它你應該安裝numpy,它可以直接支持許多矩陣操作:

+1

人們可能會考慮使用numpy以及... – mgilson 2013-03-28 06:48:55

+1

OP似乎並沒有準備好讓這個跳躍: - ) – 2013-03-28 06:51:32

+2

不要太早開始。說實話,我認爲使用numpy數組會比試圖用列表複製它們的功能要容易得多。 – mgilson 2013-03-28 06:52:40