私は、Matrix クラスとそれを使用する大量のコードを含む古くて成長した C++ ライブラリを持っています。基本的には
class Matrix {
double* p; // the actual data
int nd; // number of dimensions
int d0, d1, d2; // the actual dimensionality
// ... (a whole lot of functions computing various things, like SVDs, dotproduct etc.
}
ここで、SWIG を使用して Python ラッパーを作成します。Python 側で NumPy 配列を使用して、他の世界との互換性を維持したいと考えています。したがって、実際には C++ Matrix クラスの機能は必要ありませんが、この C++ Matrix を必要とするライブラリの他の部分を使用したいと考えています。したがって、完璧な状況は、NumPy 配列から Matrix クラスに typemap を書き込むことができれば、すべての呼び出しで NumPy 配列を透過的に変換し、メモリを同期した状態に保つことができます。私たちのライブラリにいくつかの関数があるとしましょう。
int some_function(Matrix& in) { /* do some stuff */ }
Pythonで次のようなことができれば素晴らしいでしょう:
a = numpy.array[1,2,3,4]
b = some_function(a)
numpy.i があることは理解していますが、それは関数マッピングと単純な古い C 配列に関するもののようです。また、タイプマップが必要なものを達成する必要があることも理解していますが、numpy データに実際にアクセスする方法がよくわかりません。それを行う(比較的)簡単な方法はありますか?
また、いくつかのチュートリアルへのポインタをいただければ幸いです。