Skip to content

SciPy - 介绍

SciPy(发音为“Sigh Pie”)是一个基石级的开源 Python 库,用于科学和技术计算。它以宽松的 BSD 许可证发布,可免费用于学术和商业用途。SciPy 构建在 NumPy 的能力之上,NumPy 是另一个基础的 Python 库。

NumPy 提供高效的 N 维数组对象和基本操作,而 SciPy 通过提供大量用户友好且高性能的数值例程来扩展这一功能。这些例程涵盖了数值积分、优化、信号处理、统计、线性代数等任务。NumPy 和 SciPy 一起构成了强大的科学计算环境,被各学科的科学家、工程师和数据分析师广泛采用。它们以易用性、全面的功能和良好的性能而闻名,可在所有主要的操作系统上运行。

SciPy 被组织成一组子包,每个子包专注于科学计算的特定领域。以下是一些关键子包的摘要:

子包(附官方文档链接)描述
scipy.cluster (https://docs.scipy.org/doc/scipy/reference/cluster.html#module-scipy.cluster)向量量化、K-均值聚类、层次聚类。
scipy.constants (https://docs.scipy.org/doc/scipy/reference/constants.html#module-scipy.constants)物理和数学常数(例如,pi、光速)。
scipy.fft (https://docs.scipy.org/doc/scipy/reference/fft.html#module-scipy.fft)现代快速傅里叶变换(FFT)例程。(取代 scipy.fftpack)。
scipy.fftpack (https://docs.scipy.org/doc/scipy/reference/fftpack.html#module-scipy.fftpack)遗留的傅里叶变换例程。新代码应使用 scipy.fft。
scipy.integrate (https://docs.scipy.org/doc/scipy/reference/integrate.html#module-scipy.integrate)数值积分例程(例如,定积分、求解微分方程)。
scipy.interpolate (https://docs.scipy.org/doc/scipy/reference/interpolate.html#module-scipy.interpolate)插值工具(例如,线性插值、三次插值、样条插值)。
scipy.io (https://docs.scipy.org/doc/scipy/reference/io.html#module-scipy.io)用于各种文件格式(例如,MATLAB、NetCDF、WAV)的数据输入和输出。
scipy.linalg (https://docs.scipy.org/doc/scipy/reference/linalg.html#module-scipy.linalg)线性代数例程,扩展了 NumPy 的 linalg(例如,矩阵分解、求解器)。
scipy.ndimage (https://docs.scipy.org/doc/scipy/reference/ndimage.html#module-scipy.ndimage)N 维图像处理(例如,滤波、形态学、测量)。
scipy.odr (https://docs.scipy.org/doc/scipy/reference/odr.html#module-scipy.odr)正交距离回归(ODR),用于在 x 和 y 变量均存在误差时进行数据拟合。
scipy.optimize (https://docs.scipy.org/doc/scipy/reference/optimize.html#module-scipy.optimize)优化算法(例如,函数最小化、求解方程根、曲线拟合)。
scipy.signal (https://docs.scipy.org/doc/scipy/reference/signal.html#module-scipy.signal)信号处理工具(例如,滤波、频谱分析、窗口函数)。
scipy.sparse (https://docs.scipy.org/doc/scipy/reference/sparse.html#module-scipy.sparse)稀疏矩阵表示和算法。包括用于稀疏线性代数的 scipy.sparse.linalg 和用于稀疏图算法的 scipy.sparse.csgraph。
scipy.spatial (https://docs.scipy.org/doc/scipy/reference/spatial.html#module-scipy.spatial)空间数据结构和算法(例如,K-D 树、Delaunay 三角剖分、凸包)。
scipy.special (https://docs.scipy.org/doc/scipy/reference/special.html#module-scipy.special)特殊数学函数(例如,Bessel 函数、gamma 函数、beta 函数、误差函数)。
scipy.stats (https://docs.scipy.org/doc/scipy/reference/stats.html#module-scipy.stats)统计函数和概率分布。

SciPy 中使用的基本数据结构是 NumPy 库提供的多维数组。NumPy 数组允许高效地存储和操作数值数据。虽然 NumPy 本身提供了一些线性代数、傅里叶变换和随机数生成的能力,但 SciPy 提供了这些功能以及许多其他数值算法更广泛且通常更优化的实现。

为了有效使用 SciPy,强烈建议充分理解 NumPy 数组及其操作。大多数 SciPy 函数期望将 NumPy 数组作为输入,并且通常返回 NumPy 数组或经常封装 NumPy 数组的 SciPy 特定对象。