📌 目录

  1. 什么是 scipy.linalg
  2. 常见线性代数操作概览
  3. 示例:求矩阵的逆
  4. 示例:解线性方程组 Ax = b
  5. 示例:特征值与特征向量
  6. 示例:奇异值分解(SVD)
  7. 示例:矩阵范数计算
  8. 出站链接与参考资料

1. 什么是 scipy.linalg

scipy.linalg 是 SciPy 提供的线性代数模块,它是 NumPy 的 numpy.linalg 的增强版,底层集成了 LAPACK 和 BLAS 等高性能数值库,功能更全面,计算效率更高。

它支持:

  • 矩阵求逆
  • 解线性方程组
  • 特征值与特征向量
  • 奇异值分解(SVD)
  • 矩阵范数、秩、行列式等

2. 常见线性代数操作概览

功能函数名
求逆linalg.inv()
解线性方程组linalg.solve()
特征值与向量linalg.eig()
奇异值分解linalg.svd()
矩阵范数linalg.norm()
行列式linalg.det()
linalg.matrix_rank()

3. 示例:求矩阵的逆

import numpy as np
from scipy import linalg

A = np.array([[1, 2], [3, 4]])
A_inv = linalg.inv(A)

print("原始矩阵:\n", A)
print("逆矩阵:\n", A_inv)


4. 示例:解线性方程组 Ax = b

import numpy as np
from scipy.linalg import solve

A = np.array([[2, 1], [1, 3]])
b = np.array([8, 13])

x = solve(A, b)
print("解 x 为:", x)

这表示求解方程组:

2x +  y = 8
 x + 3y = 13


5. 示例:特征值与特征向量

import numpy as np
from scipy.linalg import eig

A = np.array([[0, -1], [1, 0]])

# 计算特征值和特征向量
eigenvalues, eigenvectors = eig(A)

print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)

这个矩阵代表逆时针旋转,特征值是虚数单位 ±i。


6. 示例:奇异值分解(SVD)

import numpy as np
from scipy.linalg import svd

A = np.array([[1, 2], [3, 4], [5, 6]])

# U: 左奇异向量,s: 奇异值,Vh: 右奇异向量的转置
U, s, Vh = svd(A)

print("U 矩阵:\n", U)
print("奇异值:", s)
print("Vh 矩阵:\n", Vh)

SVD 是数据降维、推荐系统、图像压缩中核心方法。


7. 示例:矩阵范数计算

import numpy as np
from scipy.linalg import norm

A = np.array([[1, -2], [-3, 4]])

# 求 Frobenius 范数(默认)
n = norm(A)
print("Frobenius 范数:", n)

# 求 1-范数(列和最大)
n1 = norm(A, 1)
print("1-范数:", n1)

# 求 ∞-范数(行和最大)
n_inf = norm(A, np.inf)
print("∞-范数:", n_inf)


🔗 出站链接与参考资料

🔍 官方资料

🎓 学习推荐