科学应用

../_images/33925223870_97e44f5629_k_d.jpg

背景

Python被经常使用在高性能科学应用中。它之所以在学术和科研项目中得到 如此广泛的应用是因为它容易编写而且执行效果很好。

由于科学计算对高性能的要求,Python中相关操作经常借用外部库,通常是 以更快的语言(如C,或者Fortran来进行矩阵操作)写的。其主要的库有 Numpy, SciPy 以及 Matplotlib。关于这些库的细节超出了本指南的范围。不过, 关于Python的科学计算生态的综合介绍可以在这里找到 Python Scientific Lecture Notes

工具

IPython

IPython 是一个加强版Python解释器,它提供了科学工作者 感兴趣的特性。其中,inline mode 允许将图像绘制到终端中(基于Qt)。 进一步的,notebook 模式支持文学化编程(literate programming, 译者注:作者这里可能是指其富文本性不是那个编程范式)与可重现性(reproducible, 译者注:作者可能是指每段程序可以单独重新计算的特性),它产生了一个基于web的 python 笔记本。这个笔记本允许您保存一些代码块,伴随着它们的计算结果以及增强的 注释(HTML,LaTex,Markdown)。这个笔记本可以被共享并以各种文件格式导出。

NumPy

NumPy 是一个用C和Fortran写的底层库,它提供一些高层 数学函数。NumPy通过多维数组和操作这些数组的函数巧妙地解决了Python运行算法较慢的问题。 任何算法只要被写成数组中的函数,就可以运行得很快。

NumPy是SciPy项目中的一部分,它被发布为一个独立的库,这样对于只需基本功能的人来说, 就不用安装SciPy的其余部分。

NumPy兼容Python 2.4-2.7.2以及3.1+。

Numba

Numba 是一个针对NumPy的Python编译器(即时编译器,JIT) 它通过特殊的装饰器,将标注过的Python(以及NumPy)代码编译到LLVM(Low Level Virtual Machine,底层虚拟机)中。简单地说,Python使用一种机制,用LLVM将Python代码编译为 能够在运行时执行的本地代码。

SciPy

SciPy 是基于NumPy并提供了更多的数学函数的库。 SciPy使用NumPy数组作为基本数据结构,并提供完成各种常见科学编程任务的模块, 包括线性代数,积分(微积分),常微分方程求解以及信号过程。

Matplotlib

Matplotlib 是一个可以灵活绘图的库,它 能够创建2D、3D交互式图形,并能保存成具有稿件质量(manuscript-quality)的图表。 其API很像 MATLAB,这使得MATLAB用户 很容易转移到Python。在 matplotlib gallery 中可以找到很多例子以及实现它们的源代码(可以在此基础上再创造)。

Pandas

Pandas 是一个基于NumPy的数据处理库,它提供了 许多有用的函数能轻松地对数据进行访问、索引、合并以及归类。其主要数据结构(DataFrame) 与R统计学包十分相近;也就是,使用名称索引的异构数据(heterogeneous data)表、时间序列操作以及对数据的自动对准(auto-alignment)。

xarray

xarray 和 Pandas 类似,但是为包装多维科学数据而生。 通过给数据标记维度、坐标和属性使得多维操作变得更加清晰和直观。它还包装了matplotlib以快速绘图,还可以通过 dask 来并行地进行大多数的操作。

Rpy2

Rpy2 是一个对R统计学包的Python绑定, 它能够让Python执行R函数,并在两个环境中交换数据。Rpy2是 对 Rpy 绑定的面向对象实现。

PsychoPy

PsychoPy 是面向认知科学家的库,它允许创建 认知心理学和神经科学实验(译者注:指的是那种您坐在电脑前,给您一个刺激测 您反应的实验,基本上就是个UI)。这个库能够处理刺激表示、实验设计脚本以及 数据收集。

资源

安装这些科学计算Python包可能会有些麻烦,因为它们中很多是用Python的C扩展实现的, 这就意味着需要编译。这一节列举了各种科学计算Python发行版,它们提供了预编译编译 且易于安装的科学计算Python包。

Python扩展包的非官方Windows二进制文件(库)

很多人在Windows平台上做科学计算,然而众所周知的是,其中很多科学计算包在该平台上 难以构建和安装。不过, Christoph Gohlke 将一系列有用的Python包编译成了Windows的二进制文件,其数量还在不断增长。如果您在 Windows上工作,您也许想要看看。

Anaconda

Anaconda Python 发行版 包含所有常见的Python科学包,也包括与数据分析和大数据相关的包。Anaconda是免费的 也有一些收费的个人插件。学术研究者可以获取这些插件的免费许可。

Canopy

Canopy 是另一个Python科学发布版,由 Enthought 提供。其受限制的 ‘Canopy Express’ 版本 是免费提供的,但是Enthought负责完整版。学术研究者可以获取到免费许可。