1.5 Scipy:高级科学计算

作者:Adrien Chauve, Andre Espaze, Emmanuelle Gouillart, Gaël Varoquaux, Ralf Gommers

Scipy

scipy包包含许多专注于科学计算中的常见问题的工具箱。它的子模块对应于不同的应用,比如插值、积分、优化、图像处理、统计和特殊功能等。

scipy可以与其他标准科学计算包相对比,比如GSL (C和C++的GNU科学计算包), 或者Matlab的工具箱。scipy是Python中科学程序的核心程序包;这意味着有效的操作numpy数组,因此,numpy和scipy可以一起工作。

在实现一个程序前,有必要确认一下需要的数据处理时候已经在scipy中实现。作为非专业程序员,科学家通常倾向于重新发明轮子,这产生了小玩具、不优化、很难分享以及不可以维护的代码。相反,scipy的程序是优化并且测试过的,因此应该尽可能使用。

警告 这个教程根本不是数值计算的介绍。因为列举scipy的不同子模块和功能将会是非常枯燥的,相反我们将聚焦于列出一些例子,给出如何用scipy进行科学计算的大概思路。

scipy是由针对特定任务的子模块组成的:

scipy.cluster向量计算 / Kmeans
scipy.constants物理和数学常量
scipy.fftpack傅里叶变换
scipy.integrate积分程序
scipy.interpolate插值
scipy.io数据输入和输出
scipy.linalg线性代数程序
scipy.ndimagen-维图像包
scipy.odr正交距离回归
scipy.optimize优化
scipy.signal信号处理
scipy.sparse稀疏矩阵
scipy.spatial空间数据结构和算法
scipy.special一些特殊数学函数
scipy.stats统计

他们全都依赖于numpy, 但是大多数是彼此独立的。导入Numpy和Scipy的标准方式:

In [1]:

  1. import numpy as np
  2. from scipy import stats # 其他的子模块类似

scipy的主要命名空间通常包含的函数其实是numpy(试一下scipy.cos其实是np.cos) 。这些函数的暴露只是因为历史原因;通常没有必要在你的代码中使用import scipy