NumPy
| 作者 | Travis Oliphant |
|---|---|
| 開発元 | コミュニティ開発 |
| 初版 | 1995年 |
| 最新版 | 1.7.0 / 2013年02月9日 |
| プログラミング言語 | Python |
| 対応OS | クロスプラットフォーム |
| 種別 | 数値計算 |
| ライセンス | New BSD license (en) |
| 公式サイト | www.numpy.org |
NumPyは、プログラミング言語Pythonの拡張モジュールであり、数値計算を効率的に行うための型付きの多次元配列のサポートをPythonに加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供する。NumPyの祖先であるNumericはJum Huguninらによって開発された。その後2005年にTravis OliphantがNumarrayの機能をNumericに組み込み、そこへ大幅な修正を加えることで、NumPyを開発した。NumPyはオープンソースであり多数の開発者が寄与している。
NumPyは、Python 2.4-2.7 および Python 3.1以降で使用できる。2011年には、PyPy用NumPy APIの開発も開始された。
目次 |
目的 [編集]
Pythonは動的型付き言語であるため、プログラムを柔軟に記述できる一方で、純粋にPythonのみを使って数値計算を行うと、ほとんどの場合C言語やJavaなどの静的型付き言語に比べて大幅に計算時間がかかる。そこでNumPyは、Pythonに対して、型付きの多次元配列オブジェクト (numpy.ndarray) と、その配列に対する多数の演算関数や操作関数を提供することによってこの問題を解決しようとしている。NumPyの内部はC言語(やFortran)によって実装されているため非常に高速に動作する。したがって、目的の処理を、大きな多次元配列(ベクトル・行列・etc.)に対する演算として記述できれば(ベクトル化)、計算時間の大半はPythonではなくC言語によるネイティブコードで実行されるようになり、C言語による等価なコードと近い速度で実行されるようになる。[1]
PythonとNumPyの組み合わせはMATLABに近い機能性を提供するため、NumPyをMATLABのフリーな代替物として使用する者もいる。いずれも動的プログラミング言語としての高い柔軟性を持ち、配列や行列を用いた高速な演算を行うことができる。両者の比較としては、MATLABはプロプライエタリ製品であり高価だが、組み込みの数学関数を多数備え、さらに様々な用途のための実用的なパッケージやSimulinkのようなツールボックスが提供されている。その一方で、NumPyは、MATLABよりも汎用的かつ現代的なプログラミング言語であるPythonに統合されており、なおかつPythonはオープンソースかつフリーである。NumPyには各種の補助的なライブラリが存在し、例えば、SciPyは、さらにMATLAB的な科学計算関数をNumPyに追加するライブラリであり、MatplotlibはMATLABライクなグラフ描画機能を提供するパッケージである。NumPyとMATLABの両者はともに、線形代数ライブラリのLAPACKを内部で使用している。
例 [編集]
以下の例では、NumPyとmatplotlibを用いて、Pythonの対話環境における非常に単純なベクトル操作とプロットを実演している。
>>> import numpy >>> from matplotlib import pyplot >>> x = numpy.linspace(0, 2 * numpy.pi, 100) >>> y = numpy.sin(x) >>> pyplot.plot(x, y) >>> pyplot.show()
関連項目 [編集]
- 数値解析ソフトウェア
- SciPy - NumPyを基盤にした科学計算ライブラリ
- matplotlib - NumPyを基盤にしたグラフ描画ライブラリ
- Sage - 幅広い分野を網羅する数学ソフトウェア
参考文献 [編集]
- ^ “SciPy PerformancePython”. 2009年9月28日閲覧。