亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對象和類

Python 日期和時間

Python 高級知識

Python 參考手冊

Python 程序?qū)蓚€矩陣相乘

Python 實例大全

在此示例中,我們將學習使用兩種不同的方法來乘法矩陣:嵌套循環(huán)和嵌套列表理解

要理解此示例,您應(yīng)該了解以下Python編程主題:

在Python中,我們可以將矩陣實現(xiàn)為嵌套列表(列表內(nèi)的列表)。

我們可以將每個元素視為矩陣的一行。

例如X = [[1, 2], [4, 5], [3, 6]]將表示一個3x2矩陣。

第一行可以選擇為X[0]。并且,可以將第一行第一列中的元素選擇為X[0][0]。

僅當X的列數(shù)等于Y的行數(shù)時,才定義兩個矩陣X和Y的乘法。

如果X是一個n X m矩陣,Y是一個m X l矩陣,那么XY是有定義的,它的維數(shù)是n X l(但YX沒有定義)。下面是在Python中實現(xiàn)矩陣乘法的幾種方法。

源代碼:使用嵌套循環(huán)的矩陣乘法

# 程序使用嵌套循環(huán)將兩個矩陣相乘

# 3x3 matrix
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
# 3x4 矩陣
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]
# 結(jié)果是 3x4
result = [[0,0,0,0],
         [0,0,0,0],
         [0,0,0,0]]

# 遍歷X行
for i in range(len(X)):
   # 遍歷Y列
   for j in range(len(Y[0])):
       # 遍歷Y行
       for k in range(len(Y)):
           result[i][j] += X[i][k] * Y[k][j]

for r in result:
   print(r)

輸出結(jié)果

[114, 160, 60, 27]
[74, 97, 73, 14]
[119, 157, 112, 23]

在這個程序中,我們使用了嵌套的for循環(huán)來遍歷每一行和每一列。我們在結(jié)果中累加乘積的和。

這種技術(shù)很簡單,但是隨著我們增加矩陣的階數(shù),計算量很大。

對于較大的矩陣操作,我們建議使用優(yōu)化的軟件包,例如NumPy,它比上述代碼快幾倍(大約1000倍)。

源代碼:使用嵌套列表理解的矩陣乘法

# 程序乘兩個矩陣使用列表理解

# 3x3 矩陣
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]

# 3x4 矩陣
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]

# 結(jié)果是 3x4
result = [[sum(a*b for a,b in zip(X_row,Y_col)) for Y_col in zip(*Y)] for X_row in X]

for r in result:
   print(r)

這個程序的輸出與上面相同。要理解上面的代碼,我們必須首先了解內(nèi)置函數(shù)zip()和使用*運算符解壓縮參數(shù)列表。

我們使用嵌套列表立即來遍歷矩陣中的每個元素。該代碼起初看起來很復雜且不可讀。但是一旦掌握了列表理解的技巧,您可能就不會想使用嵌套循環(huán)了。

Python 實例大全