Un modo per creare una matrice NumPy con API C?
-
05-09-2019 - |
Domanda
Ho letto la documentazione sul NumPy C API ho trovato, ma non era ancora in grado di sapere se v'è la possibilità di costruire un oggetto matrice C API - non una matrice bidimensionale. La funzione è inteso per lavoro con matrici matematiche, e non voglio strani risultati se l'utente chiama moltiplicazione matriciale dimenticando di convertire questo valore da una matrice a una matrice (moltiplicazione ed elevamento a potenza essendo l'unica differenza che matrice sottoclasse ha).
Soluzione
numpy.matrix
è una classe ordinaria definita nella NumPy / core / defmatrix.py . È possibile costruire usando C API come qualsiasi altra istanza di classe definita dall'utente in Python.
Altri suggerimenti
È possibile chiamare qualsiasi pitone richiamabile con le funzioni 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");
Ciò creerà una my_matrix
matrice di dimensione 2x2.
EDIT:. modificati i riferimenti da numpy.zeros
/ numpy.ndarray
a numpy.matrix
invece
Ho anche trovato un buon tutorial su questo argomento: http://starship.python.net/ equipaggio / Hinsen / NumPyExtensions.html