Python SciPy 介绍/速查表
·
🔬 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,便于实验和调试。
更多推荐
所有评论(0)