Python 矩阵乘法代码

在纯 Python 中执行矩阵乘法,无需依赖。运行我们的嵌套循环与优化结构的比较。

在编辑器中尝试

概述

矩阵乘法是线性代数、计算机图形学和机器学习中的基本数学运算。它涉及获取两个矩阵并通过计算行和列的点积来生成第三个矩阵。

要将矩阵 A 乘以矩阵 B,A 中的列数必须等于 B 中的行数。所得矩阵的尺寸为 A 的行和 B 的列。

在纯 Python 中,矩阵乘法是使用三个嵌套循环实现的。虽然易于编写,但这种 O(n³) 操作速度很慢,这就是数据科学家在生产中使用NumPy等专用库引擎的原因。

代码和执行输出

使用嵌套循环和列表理解的纯 Python 矩阵乘法。

matrix_mult.py
在编辑器中尝试
def multiply_matrices(A, B):
    rows_A = len(A)
    cols_A = len(A[0])
    rows_B = len(B)
    cols_B = len(B[0])
    
    if cols_A != rows_B:
        raise ValueError("Cannot multiply: column size of A must match row size of B.")
        
    # Initialize result matrix with zeros
    result = [[0 for _ in range(cols_B)] for _ in range(rows_A)]
    
    # Iterate through rows of A
    for i in range(rows_A):
        # Iterate through columns of B
        for j in range(cols_B):
            # Iterate through rows of B (or columns of A)
            for k in range(cols_A):
                result[i][j] += A[i][k] * B[k][j]
                
    return result

# 2x3 Matrix A
matrix_A = [
    [1, 2, 3],
    [4, 5, 6]
]

# 3x2 Matrix B
matrix_B = [
    [7, 8],
    [9, 10],
    [11, 12]
]

print("Matrix A (2x3):", matrix_A)
print("Matrix B (3x2):", matrix_B)
res = multiply_matrices(matrix_A, matrix_B)
print("Product (2x2):", res)
端子输出
Matrix A (2x3): [[1, 2, 3], [4, 5, 6]]
Matrix B (3x2): [[7, 8], [9, 10], [11, 12]]
Product (2x2): [[58, 64], [139, 154]]

逐步实施

  • 数学图形渲染和坐标旋转
  • 简单的人工神经网络层点积
  • 了解算法结构和嵌套循环

常见问题解答

为什么NumPy执行矩阵乘法的速度如此之快?

NumPy用 C 编写,并利用高度优化的 BLAS/LAPACK 库。它利用了矢量化、CPU 缓存优化和并行执行,这是标准 Python 循环无法做到的。

Python 中的“@”运算符是什么?

从Python 3.5 开始,引入了“@”符号作为矩阵乘法的专用中缀运算符,允许您在使用 numpy 数组时运行“A @ B”。

相关主题