1. ホーム
  2. c++

[解決済み] C++のためのNumPyスタイル配列?[クローズド]

2022-12-09 20:59:26

質問

スライス、ベクトル化された操作、要素ごとの内容の加算や減算などをサポートした NumPy ライクな配列を持つ C++(または C)ライブラリはありますか?

どのように解決するのですか?

ここでは、あなたのニーズに合うかもしれないいくつかのフリーソフトを紹介します。

  1. GNU 科学ライブラリ はC言語で書かれたGPLソフトウェアです。したがって、C言語ライクな割り付けやプログラミングの方法(ポインタなど)を持っています。このため GSLwrap を使えば、GSL を使いながら C++ 的なプログラミングをすることができます。GSL には BLAS の実装がありますが ATLAS を使うことができます。

  2. boost/uBLAS ライブラリは、C++ で書かれた BSL ライブラリで、boost パッケージとして配布されています。BLAS 標準を C++ で実装したものです。uBLAS にはいくつかの線形代数関数が付属しており、また ATLASへの実験的バインディング .

  3. 固有値 はC++で書かれた線形代数ライブラリで、MPL2ライセンス(バージョン3.1.1から)またはLGPL3/GPL2(古いバージョン)の下で配布されています。C++流のプログラミングですが、他の2つよりも統合されています(より多くのアルゴリズムとデータ構造が利用可能です)。Eigen はより高速であると主張する 事実上の標準であるBLASのAPIには従っていませんが、上記のBLASの実装よりも高速であると主張しています。Eigenは並列実装にはあまり力を注いでいないようです。

  4. アルマジロ は C++ 用の LGPL3 ライブラリです。以下のようなバインディングがあります。 LAPACK (numpyで使われているライブラリ)のバインディングを持っています。再帰的テンプレートとテンプレートメタプログラミングを使っているのが良い点です(他のライブラリもやっているかは分かりませんが)。

  5. エクステンサー は、BSD ライセンスの C++ ライブラリです。NumPyと非常によく似たC++ APIを提供しています。参照 https://xtensor.readthedocs.io/en/latest/numpy.html を参照してください。

これらの代替プログラムは、データ構造と基本的な線形代数を取得したいだけなら、本当に良いものです。スタイル、ライセンス、システム管理者の課題(LAPACKのような大きなライブラリのインストールは難しいかもしれません)についての好みによって、あなたのニーズに最も適したものを選択することができます。