使用多維陣列的 Python 矩陣乘法程式
矩陣是一組按行和列排列的數字。具有 m 行和 n 列的矩陣稱為 m X n 矩陣,m 和 n 稱為其維度。矩陣是一個二維陣列,在 Python 中可以使用列表或 NumPy 陣列建立。
一般來說,矩陣乘法可以透過將第一個矩陣的行乘以第二個矩陣的列來完成。這裡,第一個矩陣的列數應等於第二個矩陣的行數。
輸入輸出場景
假設我們有兩個矩陣 A 和 B,這兩個矩陣分別具有 2X3 和 3X2 的維度。相乘後,結果矩陣將具有 2 行 1 列。
[b1, b2] [a1, a2, a3] * [b3, b4] = [a1*b1+a2*b2+a3*a3] [a4, a5, a6] [b5, b6] [a4*b2+a5*b4+a6*b6]
此外,我們還可以進行矩陣的逐元素乘法。在這種情況下,兩個輸入矩陣的行數和列數必須相同。
[a11, a12, a13] [b11, b12, b13] [a11*b11, a12*b12, a13*b13] [a21, a22, a23] * [b21, b22, b23] = [a21*b21, a22*b22, a23*b23] [a31, a32, a33] [b31, b32, b33] [a31*b31, a32*b32, a33*b33]
使用 For 迴圈
使用巢狀 for 迴圈,我們將對兩個矩陣執行乘法運算並將結果儲存在第三個矩陣中。
示例
在這個示例中,我們將初始化一個結果矩陣,其中所有元素都為零,以儲存乘法結果。
# Defining the matrix using multidimensional arrays
matrix_a = [[1,2,3],
[4,1,2],
[2,3,1]]
matrix_b = [[1,2,3,2],
[2,3,6,3],
[3,1,4,2]]
#function for displaying matrix
def display(matrix):
for row in matrix:
print(row)
print()
# Display two input matrices
print('The first matrix is defined as:')
display(matrix_a)
print('The second matrix is defined as:')
display(matrix_b)
# Initializing Matrix with all 0s
result = [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]]
# multiply two matrices
for i in range(len(matrix_a)):
# iterate through rows
for j in range(len(matrix_b[0])):
# iterate through columns
for k in range(len(matrix_b)):
result[i][j] = matrix_a[i][k] * matrix_b[k][j]
print('The multiplication of two matrices is:')
display(result)
輸出
The first matrix is defined as: [1, 2, 3] [4, 1, 2] [2, 3, 1] The second matrix is defined as: [1, 2, 3, 2] [2, 3, 6, 3] [3, 1, 4, 2] The multiplication of two matrices is: [9, 3, 12, 6] [6, 2, 8, 4] [3, 1, 4, 2]
第一個矩陣 (matrix_a) 的行數和列數為 3,第二個矩陣 (matrix_b) 的行數為 3,列數為 4。將這兩個矩陣 (matrix_a, matrix_b) 相乘後,結果矩陣將具有 3 行 4 列(即 3X4)。
示例
這裡的矩陣是使用 numpy.array() 函式建立的,這樣我們就可以簡單地使用 @ 運算子進行矩陣乘法。
import numpy as np
# Defining the matrix using numpy array
matrix_a = np.array([[1,2,5], [1,0,6], [9,8,0]])
matrix_b = np.array([[0,3,5], [4,6,9], [1,8,0]])
# Display two input matrices
print('The first matrix is defined as:')
print(matrix_a)
print('The second matrix is defined as:')
print(matrix_b)
# multiply two matrices
result = matrix_a @ matrix_b
print('The multiplication of two matrices is:')
print(result)
輸出
The first matrix is defined as: [[1 2 5] [1 0 6] [9 8 0]] The second matrix is defined as: [[0 3 5] [4 6 9] [1 8 0]] The multiplication of two matrices is: [[ 13 55 23] [ 6 51 5] [ 32 75 117]]
乘法運算子 @ 可用於 Python 3.5 及更高版本,否則可以使用 numpy.dot() 函式。
示例
在這個示例中,我們將使用 (*) 星號運算子對兩個 NumPy 陣列執行逐元素乘法運算。
import numpy as np
# Defining the matrix using numpy array
matrix_a = np.array([[1,2,5], [1,0,6], [9,8,0]])
matrix_b = np.array([[0,3,5], [4,6,9], [1,8,0]])
# Display two input matrices
print('The first matrix is defined as:')
print(matrix_a)
print('The second matrix is defined as:')
print(matrix_b)
# multiply elements of two matrices
result = matrix_a * matrix_b
print('The element-wise multiplication of two matrices is:')
print(result)
輸出
The first matrix is defined as: [[1 2 5] [1 0 6] [9 8 0]] The second matrix is defined as: [[0 3 5] [4 6 9] [1 8 0]] The element-wise multiplication of two matrices is: [[ 0 6 25] [ 4 0 54] [ 9 64 0]]
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP