使用NumPy在Python中一行程式碼實現兩個矩陣的乘法


矩陣乘法是一個冗長的過程,需要以某種方式將矩陣每一行和每一列的每個元素相乘並相加。對於矩陣乘法,第一個矩陣的列數必須等於第二個矩陣的行數。結果矩陣的行數等於第一個矩陣的行數,列數等於第二個矩陣的列數。

對於較小的矩陣,我們可以設計巢狀的for迴圈來求解結果。對於較大的矩陣,我們需要Python中的一些內建功能來處理這個問題。我們將在下面看到這兩種方法。

使用for迴圈

我們取兩個維度分別為2x3和3x2(行x列)的矩陣。矩陣乘法的結果是一個2x2矩陣。我們設計了一個巢狀的for迴圈,用於遍歷A的列和B的行,並將這些行和列中值的乘積相加。

示例

 線上演示

#matrix A with 2 rows
A = ([5,10,15],[20,25,30])

#matrix B with 2 columns
B = ([4,8],[12,10],[14,16])

result = [[0 for x in range(2)] for y in range(2)]

for i in range(len(A)):
   # iterate through columns of A
   for j in range(len(B[0])):
      # iterate through rows of B
      for k in range(len(B)):
         result[i][j] += A[i][k] * B[k][j]
for r in result:
   print(r)

輸出

執行上面的程式碼得到以下結果

[350, 380]
[800, 890]

使用NumPy

NumPy有一個名為dot的內建函式,可以執行矩陣乘法。我們的程式程式碼行數大大減少,語法也更加簡單。

示例

 線上演示

import numpy as np

#matrix A
matrix_A = ([5,10,15],[20,25,30])

#matrix B
matrix_B = ([4,8],[12,10],[14,16])
result = np.dot(matrix_A,matrix_B)

# Result
print(result)

輸出

執行上面的程式碼得到以下結果

[[350 380]
[800 890]]

更新於:2020年1月7日

603 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.