首頁 >後端開發 >Python教學 >Python程式使用多維數組相乘兩個矩陣

Python程式使用多維數組相乘兩個矩陣

WBOY
WBOY轉載
2023-09-11 17:09:07694瀏覽

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]]

以上是Python程式使用多維數組相乘兩個矩陣的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除