NumPy库介绍

0 阅读1分钟

NumPy(Numerical Python) 是 Python 生态中高性能数值计算的基石库,核心提供 ndarray(多维数组对象) 与基于数组的矢量化运算、广播、线性代数、统计、傅里叶、随机数等能力,底层用 C 实现,远快于原生 Python 循环。下面按函数功能分类 + 适用方向 + 典型场景详细说明。

一、数组创建与初始化(数据准备)

核心函数

  • np.array():从列表 / 元组 / 序列生成 ndarray
  • np.zeros() / ones() / empty() / full():全 0、全 1、空、指定值数组
  • np.arange() / linspace() / logspace():等差、等间隔、对数序列
  • np.eye() / identity():单位矩阵
  • np.random.rand() / randn() / normal() / randint():均匀 / 正态 / 整数随机数
  • np.fromfunction() / fromfile():函数 / 文件生成数组

适用方向

  • 数据初始化、模拟数据集、占位、测试用例
  • 机器学习 / 深度学习:权重、偏置、输入张量初始化
  • 科学仿真:网格、参数扫描、蒙特卡洛样本

示例

import numpy as np
arr = np.array([1,2,3])
zeros = np.zeros((3,4))
x = np.linspace(0, 1, 100)  # 0→1 100点
rand = np.random.normal(0, 1, size=(1000, 20))

二、数组结构与维度操作(形状 / 索引 / 切片 / 拼接)

核心函数

  • 形状变换reshape() / ravel() / flatten() / transpose() / T / swapaxes()
  • 拼接 / 拆分concatenate() / stack() / hstack() / vstack() / split() / hsplit() / vsplit()
  • 增删append() / insert() / delete() / resize()
  • 去重 / 排序unique() / sort() / argsort()
  • 索引 / 掩码[] / where() / nonzero() / take() / extract()

适用方向

  • 数据清洗、重塑、特征工程、维度对齐
  • 图像 / 时序:裁剪、翻转、通道交换、分块
  • 表格 / 矩阵:行列拼接、筛选、去重、排序

示例

img = np.random.rand(256,256,3)
gray = img.mean(axis=2)
img_rot = img.transpose(1,0,2)  # 转置
mask = img > 0.5
img[mask] = 1

三、数学函数(矢量化运算)

核心函数

  • 基础运算add() / subtract() / multiply() / divide() / power() / mod()
  • 三角函数sin() / cos() / tan() / arcsin() / deg2rad() / rad2deg()
  • 指数 / 对数exp() / log() / log2() / log10() / sqrt() / cbrt()
  • 取整 / 符号round() / floor() / ceil() / trunc() / abs() / sign()
  • 广播机制:不同形状数组自动对齐维度运算

适用方向

  • 大规模逐元素计算(替代 Python 循环)
  • 信号 / 波形生成、物理方程、几何计算、归一化
  • 特征变换:对数、幂、标准化、非线性映射

示例

x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x) + 0.1*np.random.randn(1000)
z = np.exp(-x**2/2)

四、统计函数(描述性统计)

核心函数

  • 集中趋势mean() / median() / average()
  • 离散程度std() / var() / min() / max() / ptp() / percentile() / quantile()
  • 协方差 / 相关cov() / corrcoef()
  • 按轴计算axis=0列、axis=1

适用方向

  • 数据探索、EDA、质量监控、异常检测
  • 金融:收益 / 风险、波动率、VaR、回撤统计
  • 实验数据:均值、误差、置信区间、显著性

示例

data = np.random.randn(1000, 5)
mu = data.mean(axis=0)
sigma = data.std(axis=0)
z = (data - mu) / sigma  # 标准化

五、线性代数(np.linalg)

核心函数

  • 矩阵乘法dot() / matmul() / @
  • 逆 / 伪逆inv() / pinv()
  • 行列式 / 秩det() / matrix_rank()
  • 特征值 / 特征向量eig() / eigh()
  • 分解svd() / qr() / cholesky()
  • 求解线性方程组solve() / lstsq()

适用方向

  • 机器学习:线性回归、PCA、SVD、矩阵分解、优化
  • 计算机视觉:投影、几何变换、相机标定
  • 工程 / 物理:有限元、动力学、控制系统
  • 金融:资产配置、风险模型、协方差矩阵、马科维茨

示例

A = np.array([[1,2],[3,5]])
b = np.array([1,2])
x = np.linalg.solve(A, b)
eig_vals, eig_vecs = np.linalg.eig(A)
U, S, VT = np.linalg.svd(A)

六、傅里叶变换(np.fft)

核心函数

  • fft() / ifft() / fft2() / ifft2() / fftfreq()

适用方向

  • 信号处理:滤波、去噪、频谱分析、卷积
  • 图像处理:频域滤波、压缩、边缘检测、JPEG/MPEG 基础
  • 时序:周期检测、降噪、特征提取

示例

sig = np.sin(2*np.pi*50*np.linspace(0,1,1024)) + 0.5*np.random.randn(1024)
f = np.fft.fft(sig)
freq = np.fft.fftfreq(1024, 1/1024)
f[np.abs(freq) > 60] = 0
sig_filt = np.fft.ifft(f).real

七、随机数与采样(np.random)

核心函数

  • 分布rand() / randn() / normal() / uniform() / poisson() / binomial()
  • 重排 / 采样shuffle() / permutation() / choice()
  • 种子seed() / RandomState

适用方向

  • 蒙特卡洛模拟、随机优化、贝叶斯、强化学习
  • 数据增强、噪声注入、过采样 / 欠采样、交叉验证
  • 测试、初始化、随机搜索、合成数据

示例

rng = np.random.RandomState(42)
samples = rng.normal(5, 2, size=10000)
idx = rng.choice(1000, size=100, replace=False)

八、文件 I/O

核心函数

  • save() / load() / savez() / savetxt() / loadtxt()

适用方向

  • 数组持久化、数据集存储、中间结果缓存
  • 与 MATLAB/R/ 其他工具交换 .npy/.npz/.txt

九、NumPy 主要适用领域

  1. 机器学习与深度学习

    • 特征工程、标准化、PCA、SVD、矩阵运算
    • TensorFlow/PyTorch 底层数组兼容
    • 神经网络前向 / 反向传播、梯度计算
  2. 数据分析与 Pandas 生态

    • Pandas 底层基于 ndarray
    • 批量数值计算、缺失值、过滤、聚合
  3. 计算机视觉与图像处理

    • 图像 = 三维数组 (H, W, C)
    • 裁剪、旋转、滤波、颜色空间、几何变换
  4. 信号与音频处理

    • FFT、滤波、频谱、卷积、降噪、特征提取
  5. 科学计算与工程仿真

    • 物理、力学、流体、电磁、有限元、微分方程
    • 天文学、量子计算、生物信息、计算化学NumPy
  6. 金融量化

    • 时序分析、波动率、协方差、资产配置、回测、蒙特卡洛

十、核心优势总结

  • 速度:矢量化 + C 内核,比纯 Python 快 10–1000 倍
  • 内存:连续存储、同类型、紧凑、高效
  • 简洁:一行替代复杂循环,代码清晰
  • 生态:Pandas、SciPy、Scikit-learn、Matplotlib、TensorFlow/PyTorch 基础

十一、与其他库的关系

  • NumPy:底层数组 + 数值计算
  • SciPy:在 NumPy 之上:积分、优化、插值、信号、统计高级方法
  • Pandas:表格 / 时序(DataFrame),底层 NumPy
  • Scikit-learn:机器学习 API,输入输出均为 NumPy 数组
  • Matplotlib/Seaborn:绘图输入为 NumPy 数组

总结

NumPy 是 Python 数值计算的基础设施

  • 函数覆盖:创建 → 结构 → 数学 → 统计 → 线性代数 → FFT → 随机 → I/O
  • 适用方向机器学习、数据分析、图像处理、信号处理、科学仿真、金融量化
  • 定位:高效、通用、底层支撑,几乎所有数据 / AI / 科学库都依赖 NumPy