3

見つけた NumPy C API のドキュメントを読みましたが、2 次元配列ではなく、C API で行列オブジェクトを作成できる可能性があるかどうかを確認できませんでした。この関数は数学行列での作業を目的としており、ユーザーがこの値を配列から行列に変換するのを忘れて行列乗算を呼び出した場合に奇妙な結果が得られることは望ましくありません (行列サブクラスの唯一の違いは乗算と累乗です)。

4

2 に答える 2

6

関数を使用して任意の python callable を呼び出すことができますPyObject_Call*

PyObject *numpy = PyImport_ImportModule("numpy");
PyObject *numpy_matrix = PyObject_GetAttrString(numpy, "matrix");
PyObject *my_matrix = PyObject_CallFunction(numpy_matrix, "(s)", "0 0; 0 0");

my_matrixこれにより、サイズ 2x2のマトリックスが作成されます。

編集:代わりにnumpy.zeros/numpy.ndarrayへの参照を変更しました。numpy.matrix

このテーマに関する優れたチュートリアルも見つけました: http://starship.python.net/crew/hinsen/NumPyExtensions.html

于 2009-02-21T19:07:29.103 に答える
3

numpy.matrixnumpy/core/defmatrix.pyで定義されている通常のクラスです。Python のユーザー定義クラスの他のインスタンスと同様に、C API を使用して構築できます。

于 2009-02-21T19:06:20.947 に答える