欢迎访问宙启技术站
智能推送

Python实现矩阵相乘

发布时间:2023-12-04 18:39:25

Python中可以使用多种方法来实现矩阵相乘,常用的有使用嵌套循环和numpy库中的dot函数。下面将分别介绍这两种方法,并给出使用示例。

1. 嵌套循环方法:

使用嵌套循环来实现矩阵相乘,需要将两个矩阵中对应位置的元素进行乘法运算,再将结果求和。可以使用三重循环来实现这个过程,分别遍历结果矩阵的行、列以及两个原始矩阵的对应位置。

示例代码:

def matrix_multiplication(matrix1, matrix2):
    rows1 = len(matrix1)
    cols1 = len(matrix1[0])
    rows2 = len(matrix2)
    cols2 = len(matrix2[0])
  
    if cols1 != rows2:
        raise ValueError("矩阵无法相乘")

    result = [[0 for _ in range(cols2)] for _ in range(rows1)]
    
    for i in range(rows1):
        for j in range(cols2):
            for k in range(cols1):
                result[i][j] += matrix1[i][k] * matrix2[k][j]
    
    return result

使用示例:

matrix1 = [[1, 2, 3],
           [4, 5, 6]]
matrix2 = [[7, 8],
           [9, 10],
           [11, 12]]

result = matrix_multiplication(matrix1, matrix2)
print(result)

输出结果:

[[58, 64], 
 [139, 154]]

2. 使用numpy库的dot函数:

numpy库中的dot函数可以直接进行矩阵相乘的操作,不需要使用循环。dot函数的输入可以是numpy数组或者是Python自带的数组。

示例代码:

import numpy as np

matrix1 = np.array([[1, 2, 3],
                    [4, 5, 6]])
matrix2 = np.array([[7, 8],
                    [9, 10],
                    [11, 12]])

result = np.dot(matrix1, matrix2)
print(result)

输出结果:

[[ 58  64]
 [139 154]]

综上所述,可以使用嵌套循环或者numpy库中的dot函数来实现矩阵相乘。嵌套循环方法需要编写较多的代码,但可以在没有numpy库的情况下使用。numpy库的dot函数方便快捷,适合处理大规模的矩阵运算。