概述#
SciPy(发音 /ˈsaɪpaɪ/)是一个自由和开源的 Python 库,用于科学和工程计算。SciPy 包含多个模块,用于统计、最优化、积分、插值、线性代数、傅里叶变换、符号和图像处理、常微分方程求解,等等。
SciPy 基于 NumPy 构建,通过与 NumPy 数组配合,在操作和可视化数据方面提供了许多高级的命令和类,大大增强了 Python 的能力。
SciPy 在 BSD 协议下发布,其开发工作由一个开放的开发者社区赞助和支持。与之同类的软件还包括 MATLAB、GNU Octave、Scilab 等。
SciPy 的特色#
- **基础算法。**SciPy 提供了很多算法,用于解决各种问题,如最优化、积分、插值、特征值问题、代数方程、微分方程、统计,等等。
- **广泛适用。**SciPy 提供的算法和数据结构可在各个领域广泛适用。
- **基础性。**通过扩展 NumPy,提供了进行数组计算的额外工具,以及专用数据结构,如稀疏矩阵、k-d 树。
- **高性能。**SciPy 包装了一些由 Fortran、C 和 C++ 等编译型高性能语言编写的高度优化的软件模块,可以同时享受 Python 的灵活性以及编译型代码的速度。
- **易用。**SciPy 的高级语法使之可以被任意背景和经验等级的程序员高效使用。
- **开源。**在 GitHub 上使用 BSD 协议发布,由社区开发和维护。
安装 SciPy#
通过 pip 安装:
pip install scipy # 或 python -m pip install scipy
通过 conda 安装:
conda install scipy
对于其他操作系统或包管理系统,可能需要用其他的安装方法,详见官方的安装指导。
SciPy 提供的子包#
针对不同的科学计算领域,SciPy 提供了不同的子包,他们包括:
| 子包 | 描述 | 子包 | 描述 |
|---|---|---|---|
cluster |
聚类算法 | constants |
物理和数学常量 |
fftpack |
快速傅里叶变换例程 | integrate |
积分和常微分方程求解 |
interpolate |
插值和平滑的样条曲线 | io |
输入和输出 |
linalg |
线性代数 | ndimage |
N 维图像处理 |
odr |
正交距离回归 | optimize |
最优化和求根例程 |
signal |
信号处理 | sparse |
稀疏矩阵和相关例程 |
spatial |
空间数据结构和算法 | special |
特殊函数 |
stats |
统计分布和函数 |