数学建模 - python (矩阵相关 - 超详细)

以下是 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. 注意事项

  1. 维度匹配:矩阵运算需满足维度规则(如乘法要求前列数=后行数)。
  2. 性能优先:对于大规模计算,优先使用 NumPy,其底层由 C 实现,速度远超纯 Python。
  3. 数据类型:确保矩阵元素类型一致(如全为整数或浮点数)。

通过掌握上述操作,你可以高效处理 Python 中的矩阵运算任务!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

且趁余花谋一笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值