🔬 SciPy 简介

SciPy(Scientific Python)是基于 NumPy 的科学计算库,专门处理科学与工程计算。
它提供了大量常用的数学函数、算法和工具,模块化组织。


📦 SciPy 主要子模块

模块 功能
scipy.linalg 线性代数(矩阵分解、求逆、特征值等)
scipy.fft 快速傅里叶变换
scipy.optimize 最优化(最小化、方程求根、曲线拟合)
scipy.stats 概率分布、统计检验
scipy.signal 信号处理(滤波、卷积、频谱分析)
scipy.sparse 稀疏矩阵存储与运算
scipy.spatial 空间数据结构、最近邻搜索、距离计算
scipy.integrate 数值积分与微分方程求解
scipy.interpolate 插值
scipy.ndimage 多维图像处理

👌 那我给你整理一份 SciPy 常用模块速查表(Cheat Sheet),一页就能快速查到常用函数,直接可以放到 Jupyter 或 Markdown 文档里。


📌 SciPy 常用模块速查表(Cheat Sheet)

SciPy 是基于 NumPy 的科学计算库,核心模块涵盖 优化、积分、插值、线性代数、统计、信号处理 等。


🔢 线性代数 scipy.linalg

from scipy import linalg
import numpy as np

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

linalg.inv(A)         # 矩阵求逆
linalg.det(A)         # 行列式
linalg.eig(A)         # 特征值 & 特征向量
linalg.svd(A)         # 奇异值分解

📈 优化 scipy.optimize

from scipy import optimize

f = lambda x: x**2 + 5*np.sin(x)
optimize.minimize(f, x0=2)   # 函数最小化

g = lambda x: x**3 - 2*x - 5
optimize.root(g, x0=2)       # 方程求根

x = [0, 1, 2, 3]
y = [1, 2, 1, 2]
optimize.curve_fit(lambda t,a,b: a*t+b, x, y)  # 曲线拟合

∫ 积分与微分方程 scipy.integrate

from scipy import integrate
import numpy as np

# 定积分
integrate.quad(lambda x: np.exp(-x**2), -np.inf, np.inf)  # 高斯积分

# 常微分方程 dy/dt = -2y, y(0)=1
f = lambda t, y: -2*y
sol = integrate.solve_ivp(f, [0, 5], [1])

🔗 插值 scipy.interpolate

from scipy import interpolate
import numpy as np

x = np.linspace(0, 10, 10)
y = np.sin(x)

f = interpolate.interp1d(x, y, kind='cubic')  # 一维插值
f(5.5)

📊 统计 scipy.stats

from scipy import stats

# 概率分布
stats.norm.pdf(0)       # 正态分布概率密度
stats.norm.cdf(0)       # 正态分布累积分布
stats.norm.rvs(size=5)  # 生成随机样本

# 假设检验
stats.ttest_1samp([2.3, 1.9, 2.5], 2.0)  # 单样本 t 检验
stats.ttest_ind([1,2,3],[3,4,5])         # 独立样本 t 检验
stats.chisquare([10,20,30],[15,15,30])   # 卡方检验

🔊 信号处理 scipy.signal

from scipy import signal

# 卷积
signal.convolve([1,2,3], [0.2,0.5], mode='full')

# 滤波器
b, a = signal.butter(3, 0.5)   # 3 阶低通滤波器
signal.lfilter(b, a, [1,2,3,4,5])

# 傅里叶变换
from scipy import fft
fft.fft([1,2,3,4])

🌐 空间数据与距离 scipy.spatial

from scipy import spatial
import numpy as np

p1, p2 = [0,0], [3,4]
spatial.distance.euclidean(p1, p2)  # 欧几里得距离 = 5

points = np.random.rand(5, 2)
tree = spatial.KDTree(points)       # 最近邻查询
tree.query([0.5, 0.5])

🧑‍💻 稀疏矩阵 scipy.sparse

from scipy import sparse
import numpy as np

A = sparse.csr_matrix([[0,0,3],[4,0,0],[0,5,0]])
A.toarray()             # 转回普通矩阵
A.transpose()           # 转置

🖼 图像处理 scipy.ndimage

from scipy import ndimage
import numpy as np

img = np.random.rand(5,5)
ndimage.gaussian_filter(img, sigma=1)  # 高斯滤波
ndimage.sobel(img)                     # Sobel 边缘检测

✅ 使用小贴士

  • SciPy 依赖 NumPy,所以所有操作都以 ndarray 为核心。
  • pandas 配合,可以完成数据清洗 → 分析 → 统计 → 可视化的完整流程。
  • 推荐搭配 Jupyter Notebook,便于实验和调试。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐