通过将矩阵传递给函数,使用Python程序乘以两个矩阵

通过将矩阵传递给函数,使用Python程序乘以两个矩阵

矩阵是由行和列中许多数字组成的二维数组。被称为m X n矩阵,其中m和n是它的维度。

通常,只有第一个矩阵的列数等于第二个矩阵的行数时,两个矩阵的乘积才有可能存在。

输入输出场景

假设我们有两个输入矩阵A和B,每个矩阵都有3X3行和列。然后,结果矩阵也将有3个行和3个列。

[a,b,c]      [j,k,l]    [(a*j + b*m + c*p), (a*k + b*n + c*q), (a*l + b*o + c*r)]
[d,e,f]      [m,n,o]    [(d*j + e*m + f*p), (d*k + e*n + f*q), (d*l + e*o + f*r)]
[g,h,i]      [p,q,r]    [(g*j + h*m + i*p), (g*k + h*n + i*q), (g*l + h*o + i*r)]

下面解释了矩阵的逐元素乘法。在此情况下,两个输入矩阵的行数和列数必须相同。

[a,b,c]      [j,k,l]    [(a*j), (b*k), (c*i)]
[d,e,f]      [m,n,o]    [(d*e), (e*n), (f*o)]
[g,h,i]      [p,q,r]    [(g*p), (h*q), (i*r)]

通过将它们传递到函数中,让我们将两个矩阵相乘。

使用循环

我们将使用Python中的def关键字定义一个用户定义的函数来乘以两个矩阵。在该函数中,我们声明了一个零矩阵,用于存储结果矩阵。通过使用for循环迭代两个矩阵的行和列,我们将乘以两个矩阵的元素并将它们存储在结果矩阵中。

例子

在下面的例子中,我们将通过将它们传递给用户定义的函数来相乘两个矩阵。

def multiply(A,B):
   result=[[0,0,0],[0,0,0],[0,0,0]]

   #for rows
   for i in range(len(A)):
      #for columns
      for j in range(len(B[0])):
         #for rows of matrix B
         for k in range(len(B)):
            result[i][j] += A[i][k] * B[k][j]

   for p in result:
      print(p)
   return

#function for displaying matrix
def display(matrix):
   for row in matrix:
      print(row)
   print()

matrix_1 = [[2, 1, 2],[3, 2, 2], [1, 1, 2]]
matrix_2 = [[1, 5, 3],[4, 2, 1], [1, 2, 2]]

# Display two input matrices
print('The first matrix is defined as:') 
display(matrix_1)
print('The second matrix is defined as:')
display(matrix_2)

print("Result: ")
multiply(matrix_1,matrix_2)

输出

The first matrix is defined as:
[2, 1, 2]
[3, 2, 2]
[1, 1, 2]

The second matrix is defined as:
[1, 5, 3]
[4, 2, 1]
[1, 2, 2]

Result: 
[8, 16, 11]
[13, 23, 15]
[7, 11, 8]

在这里,我们将使用一些内置的Numpy函数来计算两个矩阵的乘积。

使用Numpy.matmul()函数

matmul()函数将执行将传递给函数的两个输入的矩阵乘法。

例子

首先,我们要导入NumPy模块,并应用np.matmul()函数来计算两个矩阵的乘积。

import numpy as np 
matrix_1 = np.array([[2, 1, 2],[3, 2, 2], [1, 1, 2]])  
matrix_2 =np.array([[1, 5, 3],[4, 2, 1], [1, 2, 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_1)
print('The second matrix is defined as:')
display(matrix_2)

print("Result: ")
print(np.matmul(matrix_1 ,matrix_2))

输出

The first matrix is defined as:
[2 1 2]
[3 2 2]
[1 1 2]

The second matrix is defined as:
[1 5 3]
[4 2 1]
[1 2 2]

Result: 
[[ 8 16 11]
 [13 23 15]
 [ 7 11  8]]

使用Numpy.multiply()函数

它将执行两个输入矩阵的逐元素乘法运算。

示例

一开始,我们将使用numpy.array()函数创建两个矩阵matrix。通过使用np.multiply()函数计算两个矩阵的逐元素乘法。

import numpy as np 

matrix_1 = np.array([[2, 1, 2], [3, 2, 2], [1, 1, 2]])  
matrix_2 = np.array([[1, 5, 3], [4, 2, 1], [1, 2, 2]])  

#显示矩阵的函数
def display(matrix):
   for row in matrix:
      print(row)
   print()

#显示两个输入矩阵
print('第一个矩阵如下:') 
display(matrix_1)
print('第二个矩阵如下:')
display(matrix_2)

print("结果如下:")
print(np.multiply(matrix_1, matrix_2))

输出

第一个矩阵如下:
[2 1 2]
[3 2 2]
[1 1 2]
第二个矩阵如下:
[1 5 3]
[4 2 1]
[1 2 2]

结果如下:
[[ 2  5  6]
 [12  4  2]
 [ 1  2  4]]

使用Numpy.dot()函数

dot()函数将执行两个输入矩阵的点积。

示例

我们将把两个numpy数组作为输入传递给np.dot()函数,以执行两个输入的点积。

import numpy as np 

matrix_1 = np.array([[2, 1, 2], [3, 2, 2], [1, 1, 2]])  
matrix_2 = np.array([[1, 5, 3], [4, 2, 1], [1, 2, 2]])  

#显示矩阵的函数
def display(matrix):
   for row in matrix:
      print(row)
   print()

#显示两个输入矩阵
print('第一个矩阵如下:') 
display(matrix_1)
print('第二个矩阵如下:')
display(matrix_2)

print("结果如下:")
print(np.dot(matrix_1, matrix_2))

输出

第一个矩阵如下:
[2 1 2]
[3 2 2]
[1 1 2]
第二个矩阵如下:
[1 5 3]
[4 2 1]
[1 2 2]

结果如下:
[[ 8 16 11]
 [13 23 15]
 [ 7 11  8]]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程