folgenden Beispiele und die numpy C-API (http://docs.scipy.org/doc/numpy/reference/c-api.html) Zugriff, ich versuche numpy Array-Daten in cpp zuzugreifen, wie folgt aus:numpy Array-Daten in C (für numpy 1.7+)
#include <Python.h>
#include <frameobject.h>
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION // TOGGLE OR NOT
#include "numpy/ndarraytypes.h"
#include "numpy/arrayobject.h"
...
// here I have passed "some_python_object" to the C code
// .. and "some_python_object" has member "infobuf" that is a numpy array
//
unsigned long* fInfoBuffer;
PyObject* infobuffer = PyObject_GetAttrString(some_python_object, "infobuf");
PyObject* x_array = PyArray_FROM_OT(infobuffer, NPY_UINT32);
fInfoBuffer = (unsigned long*)PyArray_DATA(x_array); // DOES NOT WORK WHEN API DEPRECATION IS TOGGLED
Wenn die API deprecation ist, ein- und ich, beim Kompilieren:
error: cannot convert ‘PyObject* {aka _object*}’ to ‘PyArrayObject* {aka tagPyArrayObject*}’ for argument ‘1’ to ‘void* PyArray_DATA(PyArrayObject*)’
Was die legitime Art und Weise, dies zu tun in numpy 1.7+ sein würde?
Frage an den C-API verwiesen, die Antwort in Bezug auf C++ Code. Die Frage bleibt, wie würde man das mit der C-API machen? – rhody
Der fragliche C++ - Code verwendet die C-API und bindet sie in Konstrukte höherer Ebene ein. Außerdem lautet die ursprüngliche Frage "Ich versuche, auf numpy Array-Daten in cpp zuzugreifen". – Quant