Frage

las ich in die Dokumentation auf NumPy C API ich finden konnte, war aber noch nicht in der Lage, um herauszufinden, ob es eine Möglichkeit, ein Matrix-Objekt mit C-API zu bauen - nicht ein zweidimensionales Array. Die Funktion ist für die Arbeit mit Mathematik Matrizen bestimmt ist, und ich will nicht, seltsame Ergebnisse, wenn der Benutzer der Matrixmultiplikation ruft zu vergessen, diesen Wert aus einem Array in eine Matrix zu konvertieren (Multiplikation und Potenzierung wobei der einzige Unterschied, dass Matrix Unterklasse hat).

War es hilfreich?

Lösung

numpy.matrix ist eine ganz normale Klasse definiert in numpy / core / defmatrix.py . Sie können bauen es C-API wie jede andere Instanz von benutzerdefinierten Klasse in Python verwendet wird.

Andere Tipps

Sie können eine beliebige Python nennen aufrufbar mit den PyObject_Call* Funktionen.

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

Dies wird eine Matrix my_matrix der Größe 2x2 erstellen.

EDIT:. Referenzen Changed / numpy.zeros numpy.ndarray stattdessen numpy.matrix

Ich fand auch ein gutes Tutorial zum Thema: http://starship.python.net/ Crew / Hinsen / NumPyExtensions.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top