以下是 Python 中处理矩阵相关运算的详细指南,主要使用 NumPy 库(最常用的科学计算库)和基础方法:
1. 安装与导入 NumPy
pip install numpy # 安装命令
import numpy as np # 导入库
2. 创建矩阵
2.1 使用 NumPy
# 从列表创建矩阵
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 创建全零矩阵
zero_matrix = np.zeros((3, 3)) # 3x3
# 创建全一矩阵
ones_matrix = np.ones((2, 4)) # 2x4
# 创建单位矩阵
identity_matrix = np.eye(3) # 3x3
# 创建随机矩阵
random_matrix = np.random.rand(3, 3) # 0~1 均匀分布
2.2 纯 Python 列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
3. 基本运算
3.1 矩阵加减法
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
# 加法
C = A + B # [[6, 8], [10, 12]]
# 减法
D = A - B # [[-4, -4], [-4, -4]]
3.2 标量乘法
result = 2 * A # [[2, 4], [6, 8]]
3.3 矩阵乘法
-
元素乘积(对应位置相乘):
elementwise = A * B # [[5, 12], [21, 32]] -
矩阵点乘(线性代数乘法):
dot_product = np.dot(A, B) # 方法1 dot_product = A @ B # 方法2 (Python 3.5+) # 结果:[[19, 22], [43, 50]]
3.4 矩阵转置
transpose = A.T # [[1, 3], [2, 4]]
4. 高级运算
4.1 矩阵求逆
inv_A = np.linalg.inv(A) # 仅适用于方阵且可逆
4.2 行列式计算
det_A = np.linalg.det(A) # 返回标量值
4.3 特征值与特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
4.4 矩阵的秩
rank = np.linalg.matrix_rank(A)
4.5 矩阵的迹(对角线元素和)
trace = np.trace(A) # 1 + 4 = 5
5. 矩阵分解
5.1 LU 分解
from scipy.linalg import lu
P, L, U = lu(A) # P: 置换矩阵, L: 下三角, U: 上三角
5.2 QR 分解
Q, R = np.linalg.qr(A)
5.3 奇异值分解 (SVD)
U, S, Vh = np.linalg.svd(A)
6. 实用函数
6.1 矩阵拼接
# 水平拼接
h_stack = np.hstack((A, B))
# 垂直拼接
v_stack = np.vstack((A, B))
6.2 矩阵切片与索引
# 获取第一行
row_1 = A[0, :]
# 获取第二列
col_2 = A[:, 1]
# 获取子矩阵(前两行和前两列)
sub_matrix = A[:2, :2]
6.3 矩阵形状操作
reshape_matrix = A.reshape(4, 1) # 改变形状为 4x1
flatten_matrix = A.flatten() # 展平为一维数组
7. 纯 Python 实现矩阵运算(无 NumPy)
7.1 矩阵乘法示例
def matrix_multiply(a, b):
result = [[0 for _ in range(len(b[0]))] for _ in range(len(a))]
for i in range(len(a)):
for j in range(len(b[0])):
for k in range(len(b)):
result[i][j] += a[i][k] * b[k][j]
return result
# 使用
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
product = matrix_multiply(A, B) # [[19, 22], [43, 50]]
8. 注意事项
- 维度匹配:矩阵运算需满足维度规则(如乘法要求前列数=后行数)。
- 性能优先:对于大规模计算,优先使用
NumPy,其底层由 C 实现,速度远超纯 Python。 - 数据类型:确保矩阵元素类型一致(如全为整数或浮点数)。
通过掌握上述操作,你可以高效处理 Python 中的矩阵运算任务!

1813

被折叠的 条评论
为什么被折叠?



