科学应用

../_images/33925223870_97e44f5629_k_d.jpg

语境

Python经常用于高性能的科学应用。由于其易写、性能好,在学术和科研项目中得到了广泛的应用。

由于其高性能特性,Python中的科学计算通常使用外部库,通常使用更快的语言(如用于矩阵操作的C或Fortran)编写。使用的主要库是 NumPySciPyMatplotlib .关于这些库的详细信息超出了Python指南的范围。然而,科学 Python 生态系统的全面介绍可以在 Python Scientific Lecture Notes .

工具

IPython

IPython 是Python解释器的增强版本,它为科学家提供了非常感兴趣的特性。这个 inline mode 允许在终端中显示图形和绘图(基于qt的版本)。而且, notebook 模式支持识字编程和可复制的科学生成基于Web的python笔记本。此笔记本允许您存储大量的python代码以及结果和其他注释(html、laxe、markdown)。然后可以以各种文件格式共享和导出笔记本。

类库

NumPy

NumPy 是用C(和Fortran)编写的用于高级数学函数的低级库。numpy巧妙地通过使用多维数组和对数组进行操作的函数,克服了在python上运行较慢算法的问题。然后,任何算法都可以表示为数组上的函数,从而使算法能够快速运行。

Numpy是SciPy项目的一部分,作为一个单独的库发布,因此只需要基本需求的人可以在不安装scipy其余部分的情况下使用它。

Numpy与python版本2.4到2.7.2和3.1+兼容。

Numba

Numba 是一个numpy感知的python编译器(just-in-time(JIT)专用编译器),它通过特殊的装饰器将带注释的python(和numpy)代码编译为llvm(低级虚拟机)。简单地说,numba使用一个用llvm编译python代码的系统来编写代码,这些代码可以在运行时本地执行。

SciPy

SciPy 是一个使用numpy实现更多数学函数的库。Scipy使用numpy数组作为基本数据结构,并附带用于科学编程中各种常用任务的模块,包括线性代数、积分(微积分)、常微分方程求解和信号处理。

Matplotlib

Matplotlib 是一个灵活的绘图库,用于创建交互式二维和三维绘图,也可以保存为手稿质量的图形。API在很多方面反映了 MATLAB 简化了matlab用户向python的过渡。许多示例以及用于重新创建它们的源代码都可以在 matplotlib gallery .

Pandas

Pandas 是一个基于numpy的数据操作库,它为访问、索引、合并和分组数据提供了许多有用的功能。主数据结构(dataframe)与R统计包中的数据结构非常接近,即具有名称索引、时间序列操作和数据自动对齐功能的异构数据表。

xarray

xarray 与大Pandas相似,但它用于包装多维科学数据。通过使用维度、坐标和属性标记数据,它使复杂的多维操作更加清晰和直观。它还将matplotlib包装起来,以便快速绘图,并且可以使用 dask .

Rpy2

Rpy2 是r统计包的python绑定,允许从python执行r函数并在两个环境之间来回传递数据。rpy2是 Rpy 绑定。

PsychoPy

PsychoPy 是认知科学家的类库,允许创建认知心理学和神经科学实验。该库处理刺激的表示、实验设计的脚本和数据收集。

资源

科学的python包的安装可能会很麻烦,因为其中许多包都是作为python c扩展实现的,需要编译这些扩展。本节列出了各种所谓的科学python发行版,这些发行版提供了科学python包的预编译和易于安装的集合。

用于python扩展包的非官方Windows二进制文件

许多从事科学计算的人都在Windows上,然而许多科学计算软件包却很难在这个平台上构建和安装。 Christoph Gohlke 但是,已经为许多有用的Python包编译了一个Windows二进制文件列表。包的列表已经从一个主要的科学python资源增长到一个更一般的列表。如果您在Windows上,您可能需要将其签出。

Anaconda

这个 Anaconda Python Distribution 包括所有常见的科学python包以及许多与数据分析和大数据相关的包。水蟒本身是免费的,并且有许多专有附加装置可以收费。附加组件的免费许可证可供学者和研究人员使用。

Canopy

Canopy 是另一个科学 Python 发行版,由 Enthought .一个有限的“冠层快车”变种是免费的,但完全分配的热情收费。免费的学术许可证。