PHP前端开发

Python程序使用多维数组相乘两个矩阵

百变鹏仔 11小时前 #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]

此外,我们还可以进行矩阵的逐元素乘法。在这种情况下,两个输入矩阵的行数和列数必须相同。

立即学习“Python免费学习笔记(深入)”;

[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 arraysmatrix_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 matrixdef display(matrix):   for row in matrix:      print(row)   print()# Display two input matricesprint('The first matrix is defined as:') display(matrix_a)print('The second matrix is defined as:')display(matrix_b)# Initializing Matrix with all 0sresult = [[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 arraymatrix_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 matricesprint('The first matrix is defined as:') print(matrix_a)print('The second matrix is defined as:')print(matrix_b)# multiply two matricesresult = matrix_a @ matrix_bprint('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 arraymatrix_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 matricesprint('The first matrix is defined as:') print(matrix_a)print('The second matrix is defined as:')print(matrix_b)# multiply elements of two matricesresult = matrix_a * matrix_bprint('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]]