使用多维数组的 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 循环,我们将对两个矩阵执行乘法运算并将结果存储在第三个矩阵中。

示例

在这个示例中,我们将初始化一个结果矩阵,其中所有元素都为零,以存储乘法结果。

Open Compiler
# 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() 函数创建的,这样我们就可以简单地使用 @ 运算符进行矩阵乘法。

Open Compiler
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 数组执行逐元素乘法运算。

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

更新于: 2023年5月15日

320 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告