Как извлечь данные из возвращенного массива numpy в программе C? - PullRequest
0 голосов
/ 08 января 2020

У меня есть основная программа, написанная на C, и я хотел бы использовать уже написанную библиотеку на Python, поэтому я встроил немного C - Python API в свою C программу.

Я успешно создал PyObject, представляющий массив numpy, содержащий данные с плавающей точкой в ​​C, и отправил его в качестве аргумента функции, определенной в скрипте Python, который будет вызываться C программа с помощью следующей команды:

pValue = PyObject_CallObject(pFunc, pArgs);,

, где pFunc - это имя функции, вызываемой в сценарии Python, pArgs - это PyObject, содержащий аргументы для передается в функцию, и pValue имеет тип PyObject, который, я считаю, будет содержать возвращаемый результат.

Функция внутри скрипта Python обрабатывает отправленный массив и затем возвращает 2-мерный numpy массив формы (nrow, ncol), содержащий данные с плавающей точкой, для моей основной программы C.

Как я могу извлечь данные из возвращенного массива и скопировать их в массив C?

В https://docs.python.org/3/extending/embedding.html#pure -включении показан пример как получить длинное значение, используя

int d = PyLong_AsLong(pValue));

Но как насчет массива numpy? Есть ли что-то вроде PyArray_AsCArray (), которое можно использовать?

...