NumPy

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
NumPy
作者 Travis Oliphant
開発元 コミュニティ開発
初版 1995年 (1995)
最新版 1.7.0 / 2013年02月9日(19か月前) (2013-02-09
プログラミング言語 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()

関連項目[編集]

参考文献[編集]

  1. ^ SciPy PerformancePython”. 2009年9月28日閲覧。

外部リンク[編集]