Jede Art und Weise eine NumPy Matrix mit C-API zu erstellen?
-
05-09-2019 - |
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).
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