BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース .NET用NumPyとSciPy

.NET用NumPyとSciPy

原文(投稿日:2011/07/27)へのリンク

Visual Studioプロジェクト向けのPythonツールの一部として、有名なNumPy と SciPy ライブラリが.NETにポートされた。ネイティブなCコアへのC#とCインターフェースを合わせたもので、全.NET言語が利用できるような方法でポートされた。

IronPython のNumPy と SciPyのポート は完全な.NETのポートであり、共通のネイティブなCコアへのカスタムな C#/Cインターフェースを含んでいる。この意味は、完全な機能が IronPythonばかりでなく、全ての.NET言語でも使える、ということである。例えば、C#やF#は、C#インターフェース オブジェクトに直接アクセスしたり、あるいは時には、他の.NET言語から IronPythonの式を評価することができる。すなわち、多次元配列オブジェクト(ndarray)を IronPython とC# あるいはF#の間でシームレスに渡すことができる。更に、 ndarrayオブジェクトは標準の IEnumerable インターフェースを実装しているので、配列オブジェクトをNumPyに特有でない既存のコードと一緒に使うことができる。

NumPy はかなり低レベルなAPIで、大きな多次元の配列やマトリクスに対して数学的な操作を行える。このライブラリは元々 Numericとして知られており、その起源は1995年まで遡る。 Python 1.0がリリースされたちょうど1年後である。現在の名前のライブラリは2005年に作成され、以前のバージョンと numarrayとして知られた競合するライブラリとを合成したものである。

この上に作成されたのが SciPyである。 Wikipediaによると、「SciPyは最適化、線形代数、積分、補間法、特殊関数、FFT, シグナルとイメージプロセッシング、ODEソルバー、科学やエンジニアリングに共通の他のタスク用のモジュールを持っている」。しばしば MATLABの代替と考えられているが、完全に MATLABを置き換えるにはSciPyは 他のライブラリ と組み合わせなければならない。

NumPy と SciPyを組み合わせると、通常の.NETコードに対していくつかの著しい利点を得ることができる。.NETのガベージコレクタは、しばしばマニュアルのメモリー管理よりもより良いパフォーマンスを提供するが、高度に最適化されたCコードから得られる、生の計算スピードは、本当に素晴らしいものがある。

これに加えて、ビューの概念がある。配列をコピーする代わりに、NumPyによって、他の配列の生のサブセットである配列を作成できる。公式にビューとして知られている、サブセットを変更することは元の配列も変更する。これによって、パフォーマンスを犠牲にせずに、よりきれいなコードを書くことができる。

この記事に星をつける

おすすめ度
スタイル

BT