Следующие примеры и Numpy C-API (http://docs.scipy.org/doc/numpy/reference/c-api.html), я пытаюсь получить доступ к Numpy массива данных в CPP, как это:Доступ Numpy массива данных в C (для 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
Когда АНИ устаревания переключен, я получаю, при компиляции:
error: cannot convert ‘PyObject* {aka _object*}’ to ‘PyArrayObject* {aka tagPyArrayObject*}’ for argument ‘1’ to ‘void* PyArray_DATA(PyArrayObject*)’
что бы законным способом сделать это в Numpy 1.7+?
Вопрос refered к C-API, ответ связан с кодом C++. Остается вопрос, как это сделать с использованием C-API. – rhody
В рассматриваемом коде C++ используется C API и обертывается в конструкциях более высокого уровня. Кроме того, в исходном вопросе говорится: «Я пытаюсь получить доступ к массивам данных numpy в cpp», – Quant