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.ndimage | n-维图像包 |
scipy.odr | 正交距离回归 |
scipy.optimize | 优化 |
scipy.signal | 信号处理 |
scipy.sparse | 稀疏矩阵 |
scipy.spatial | 空间数据结构和算法 |
scipy.special | 一些特殊数学函数 |
scipy.stats | 统计 |
他们全都依赖于numpy, 但是大多数是彼此独立的。导入Numpy和Scipy的标准方式:
In [1]:
import numpy as np
from scipy import stats # 其他的子模块类似
scipy
的主要命名空间通常包含的函数其实是numpy(试一下scipy.cos
其实是np.cos
) 。这些函数的暴露只是因为历史原因;通常没有必要在你的代码中使用import scipy
。