怎样用 Python 实现矩阵乘法?
时间: 2025-05-04 08:26:29 浏览: 38
在 Python 中实现矩阵乘法有多种方式,这里介绍几种常用的方法:
### 方法一:纯Python列表嵌套循环
最直接的方式就是使用嵌套的for循环遍历每个元素,并按行对列相乘累加得到新矩阵对应的值。这种方法虽然直观但是效率较低,在实际应用中很少单独使用。
```python
def matrix_multiply(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:
print("无法相乘!")
return
# 初始化结果矩阵 C = A * B
C = [[0 for row in range(cols_B)] for col in range(rows_A)]
for i in range(rows_A): # 行索引从A取
for j in range(cols_B): # 列索引从B取
sum = 0 # 累积求和变量初始化为零
for k in range(cols_A): # 内层循环完成点乘操作
sum += A[i][k] * B[k][j]
C[i][j] = sum # 将每次内层循环后的sum赋给对应位置
return C
# 示例测试数据
matrix_a = [[1,2],[3,4]]
matrix_b = [[5,6],[7,8]]
result_matrix = matrix_multiply(matrix_a,matrix_b)
print(result_matrix)
```
### 方法二:NumPy 库加速版
为了提高性能和代码简洁度,通常我们会选择第三方科学计算库 NumPy 来辅助完成这项工作。它可以极大程度上优化内部算法并且支持硬件层面的并行化运算,使得大型稀疏矩阵也能高效运行。
首先需要安装 numpy 包 (`pip install numpy`) ,然后按照如下方式进行矩阵乘法:
```python
import numpy as np
def matmul_numpy(mat1, mat2):
return np.dot(mat1,mat2) # 或者用 @ 运算符: return mat1 @ mat2
matrix_c = np.array([[1,2], [3,4]])
matrix_d = np.array([[5,6], [7,8]])
res_np = matmul_numpy(matrix_c, matrix_d)
print(res_np.tolist()) # 打印回普通 python list 方便查看结构
```
以上两种方法都是有效的解决方案,不过推荐初学者先理解第一种手动构建逻辑的过程再尝试引入专业工具包提升效率。随着学习深入你会发现越来越多实用的功能隐藏于像 SciPy、Pandas 这样的扩展包当中等着你去探索!
阅读全文
相关推荐
















