科学分野におけるアプリケーション

コンテキスト

Pythonは、ハイパフォーマンスが要求される科学分野のアプリケーションによく使われます。 Pythonは、書くのが容易でキチンと動くという理由から学校や科学分野のプロジェクトで広く使われています。

ハイパフォーマンスであるため、Pythonで科学技術の計算には、 より早く実行できる(行列演算が得意なCやFORTRANのような)言語で書かれた外部のライブラリが使われます。 主要なライブラリとして NumPySciPy が使われます。

ライブラリ

NumPy

NumPy is a low level library written in C (and FORTRAN) for high level mathematical functions. NumPy cleverly overcomes the problem of running slower algorithms on Python by using multidimensional arrays and functions that operate on arrays. Any algorithm can then be expressed as a function on arrays, allowing the algorithms to be run quickly.

NumPy は、 ハイレベルな数学の計算をすることができるC言語(そしてFORTRAN)で書かれている低レベルのライブラリです。

NumPyはSciPyプロジェクトの一部で、 基本的な要件としてNumPyだけを使うことができるようにするために別のライブラリとしてリリースされています。

NumPyはPythonのバージョン2.4から2.7.2や3.1以上まで互換性があります。

SciPy

SciPy は、数学分野の機能をより多く持っているライブラリで、Numpyを使っています。 SciPyは基本的なデータ構造の部分にNumPyの配列を使っています。 SciPyは、線形代数、統合(微積分)、常微分方程式ソルバや信号処理のような科学技術の分野で、 使われるプログラムの処理において様々なところで一般的に使われているモジュールから成ります。

Enthought

NumPyとSciPyをインストールする作業は手こずるかもしれません。 そういった理由から Enthought Python distribution が作られました。 Enthoughtで、科学分野においてPythonを使うことはかつてないほど容易になりました。 (100くらいの科学分野のPythonパッケージがワンクリックでインストールできます) Enthought Python Distributionは無料版の EPD Freeいくつかの支払オプション がある有償版の2種類が提供されています。

Matplotlib

matplotlib is a flexible plotting library for creating interactive 2D and 3D plots that can also be saved as manuscript-quality figures. The API in many ways reflects that of MATLAB, easing transition of MATLAB users to Python. Many examples, along with the source code to re-create them, can be browsed at the matplotlib gallery.

Resources

ほとんどの人が科学技術の計算をWindowsで行なっています。 そして科学技術の計算をするパッケージのほとんどがビルドやインストールすることが難しいという評判です。 しかし、 Christoph Gohlke は、 たくさんの便利なPythonパッケージ用にWindowsバイナリのリストをコンパイルしました。