NumPy - 矩陣乘法



什麼是矩陣乘法?

矩陣乘法是線性代數中的一種運算,涉及兩個矩陣相乘。它不僅僅是簡單的元素級乘法,而是遵循特定的數學規則。

在此運算中,第一個矩陣的行與第二個矩陣的列相乘,並將結果相加以形成一個新的矩陣。

矩陣乘法在物理學、計算機圖形學和機器學習等各個領域都很有用。它是變換和求解線性方程組的關鍵運算。

矩陣乘法的條件

在執行矩陣乘法之前,務必確保兩個矩陣滿足某些條件:

  • 第一個矩陣的列數必須等於第二個矩陣的行數。
  • 結果矩陣的維度將取自第一個矩陣的行數和第二個矩陣的列數。

例如,形狀為 (2, 3) 的矩陣可以乘以形狀為 (3, 4) 的矩陣,得到形狀為 (2, 4) 的矩陣。

矩陣乘法公式

矩陣乘法的公式如下:

對於形狀為 (m, n) 的矩陣 **A** 和形狀為 (n, p) 的矩陣 **B**,結果矩陣 **C** 將具有形狀 (m, p),並且每個元素 **cij** 由以下公式計算:

cij = Σ (aik * bkj) where i = 1 to m, j = 1 to p, and k = 1 to n

NumPy 中的矩陣乘法

在 NumPy 中,可以使用多種方法執行矩陣乘法:

  • **使用 * 運算子:**此運算子可用於元素級乘法,但當應用於兩個二維陣列時,也可用於矩陣乘法。
  • **使用 @ 運算子(Python 3.5 及更高版本):**@ 運算子專為矩陣乘法而設計,使程式碼更簡潔易懂。
  • **使用 np.dot() 函式:**此函式計算兩個陣列的點積。對於二維陣列,它執行矩陣乘法。
  • **使用 np.matmul() 函式:**與 np.dot() 函式類似,此函式專門為矩陣乘法而設計。

NumPy 中矩陣乘法的示例

在此示例中,我們將演示如何使用上述所有方法進行矩陣乘法:

import numpy as np

# Define two matrices
matrix_1 = np.array([[1, 2], [3, 4]])
matrix_2 = np.array([[5, 6], [7, 8]])

# Matrix multiplication using *
result_1 = matrix_1 * matrix_2

# Matrix multiplication using @
result_2 = matrix_1 @ matrix_2

# Matrix multiplication using np.dot()
result_3 = np.dot(matrix_1, matrix_2)

# Matrix multiplication using np.matmul()
result_4 = np.matmul(matrix_1, matrix_2)

print("Matrix Multiplication (*):\n", result_1)
print("Matrix Multiplication (@):\n", result_2)
print("Matrix Multiplication (np.dot()):\n", result_3)
print("Matrix Multiplication (np.matmul()):\n", result_4)

以下是獲得的輸出:

Matrix Multiplication (*):
[[ 5 12]
 [21 32]]
Matrix Multiplication (@):
[[19 22]
 [43 50]]
Matrix Multiplication (np.dot()):
[[19 22]
 [43 50]]
Matrix Multiplication (np.matmul()):
[[19 22]
 [43 50]]

在上面的輸出中,您將看到使用不同方法進行矩陣乘法的結果相同,但方法不同。以下是每個結果的含義:

  • **矩陣乘法 (*):**執行元素級乘法,這與矩陣乘法不同。它將兩個矩陣的對應元素相乘。
  • **矩陣乘法 (@):**執行真正的矩陣乘法,遵循線性代數規則。它將第一個矩陣的行乘以第二個矩陣的列。
  • **矩陣乘法 (np.dot()):**np.dot() 函式計算兩個矩陣的點積,對於二維陣列,它等於矩陣乘法。
  • **矩陣乘法 (np.matmul()):**此函式的工作原理與 np.dot() 類似,但專門為矩陣乘法而設計。

使用較大矩陣的矩陣乘法

讓我們考慮一個更大的示例,其中我們有形狀為 (2, 3) 和 (3, 4) 的矩陣,我們將對它們進行乘法。結果矩陣將具有形狀 (2, 4)。以下是程式碼:

import numpy as np
matrix_1 = np.array([[1, 2, 3], [4, 5, 6]])
matrix_2 = np.array([[7, 8, 9, 10], [11, 12, 13, 14], [15, 16, 17, 18]])

result = np.matmul(matrix_1, matrix_2)
print(result)

此處,結果矩陣的形狀為 (2, 4),這與矩陣乘法的規則一致。

結果矩陣中的每個元素都是第一個矩陣的行和第二個矩陣的列中對應元素乘積的總和。

[[ 74  80  86  92]
 [173 188 203 218]]

現實世界中的應用

矩陣乘法是各種現實世界應用中的核心運算:

  • **機器學習:**在機器學習中,尤其是在神經網路中,矩陣乘法用於計算網路層中的啟用。網路的權重表示為矩陣,乘法有助於計算輸出。
  • **圖形渲染:**在計算機圖形學中,矩陣乘法用於變換空間中的物件。變換矩陣與物件的座標相乘以執行縮放、旋轉或平移。
  • **經濟學:**在經濟學中,矩陣用於對線性方程組進行建模並解決諸如供求模型之類的最佳化問題。
廣告