SciPy

SciPy是一个开源的Python算法库和数学工具包。SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

SciPy目前在BSD许可证下发布。它的开发最初由资助。与其功能相类似的软件还有MATLAB、GNU Octave和Scilab。

 组成 
SciPy工具包是Python科学计算的核心，其功能根据功能分成如下子包：

 cluster（聚类）：层次聚类，向量量化，K-均值聚类。
 constants（常数）：物理常数和换算系数。
 datasets（数据集）：装载SciPy数据集。
 fft：快速离散傅里叶变换算法。
 fftpack（fft包）：遗留的离散傅里叶变换接口。
 integrate（积分）：数值积分工具。
 interpolate（插值）：插值工具。
 io：数据输入输出，支持读写MATLAB文件、读IDL文件、读写文件、非格式化FORTRAN文件、netCDF的CDF-1与CDF-2格式文件、文件、WAV声音文件和读Arff文件。
 linalg：线性代数工具。
 misc（杂项）：杂项例如示例图片。
 ndimage（n-维图像）：用于多维图像处理的函数。
 ODR：（Orthogonal Distance Regression）的类与算法。
 optimize（优化）：优化算法例如线性规划。
 signal（信号）：信号处理工具。
 sparse（稀疏）：稀疏矩阵及相关算法。
 spatial（空间）：空间结构有关算法如k-d树、最邻近搜索、凸包等。
 special（特殊）： 特殊函数。
 stats（统计）：统计函数，如概率分布、、频率统计量、假设检验、相关、重抽样、蒙特卡罗方法、列联表。
早先版本中的weave（编织）模块，用于在Python代码中包含C/C++代码的工具，现已弃用，被Cython取代。

 数据结构 
SciPy的基础数据结构是由NumPy模块提供的多维阵列。NumPy提供了一些有关线性代数、傅里叶变换和随机数生成的函数，但不具备SciPy中对应函数的通用性。NumPy还可以作为任意数据类型的高效多维数据容器，这使得NumPy可以快速无缝地和众多数据库集成。 旧版SciPy使用Numeric作为阵列类型，但现已弃用，新版SciPy改用Numpy实现的阵列。

 历史 
在1990年代，Python引入了用于数值计算的阵列类型Numeric（这个包最终被编写的NumPy取代）；此后，扩展模块数量不断增加，许多人对一个完整的科学技术计算环境感兴趣。2001年，Travis Oliphant、Eric Jones和Pearu Peterson合并了他们编写的代码，并将结果包命名为SciPy。新创建的包对Numeric数据结构提供了常见数值运算。此后不久，Fernando Pérez发布了IPython（增强型交互式shell，在科学计算界广泛使用）；John Hunter发布了Matplotlib（2D绘图库）的第一个版本，SciPy环境继续增长，并增加了更多用于科学计算的工具。

 参考文献 

外部链接
 SciPy官方网站
 Dave Kuhlman的SciPy课程大纲
 SciPy API参考

Category:科学软件
Category:开源软件
Category:Python軟體
Category:Python库
Category:Python科学库