2010-07-09 3 views
1

Je voudrais convertir le double tableau numpy en tableau flottant numpy dans C (Swig). Je suis en train d'utiliserconversion de type numpy arrays en C

PyObject *object = PyArray_FROM_OT(input,NPY_FLOAT) 

ou

PyObject *object = PyArray_FROMANY(input,NPY_FLOAT,0,0,NPY_DEFAULT) 

ou

PyObject *object = PyArray_FromObject(input,NPY_FLOAT,0,0) 

ou

PyObject *object = PyArray_ContiguousFromAny(input,NPY_FLOAT,0,0) 

Mais tous renvoient NULL? Est-ce que je manque quelque chose?

+0

Vous n'avez pas encore de réponses? Quelqu'un peut-il me dire comment convertir les types en utilisant l'API en général? – lakshmesha

Répondre

3

Votre approche est correcte, mais votre hypothèse sur leur API C numpy ne l'est pas. NPY_FLOAT est juste une constante intégrale, pourtant les fonctions que vous avez postées nécessitent que le paramètre type soit et qu'il soit PyArray_Descr struct.

Pour obtenir une description du type d'un type simple, vous pouvez appeler PyArray_DescrFromType, de sorte que votre appel pourrait ressembler à ceci:

PyArrayObject* float_array = (PyArrayObject*)PyArray_FromAny(input,PyArray_DescrFromType(NPY_FLOAT64), 0,0, flags); 

... avec des drapeaux étant ce que vous drapeaux lors de la conversion paraît approprié - jetez un oeil à l'API numpy, à la fois pour l'invocation correcte de l'API et pour la signification des différents drapeaux et valeurs.