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

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

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

pValue = PyObject_CallObject(pFunc, pArgs);,

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

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

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

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

int d = PyLong_AsLong(pValue));

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


person bigchaipat    schedule 08.01.2020    source источник
comment
Может быть, это? stackoverflow.com/questions/37628180/passing- a-numpy-массив-в-c   -  person ChatterOne    schedule 08.01.2020
comment
Или это? stackoverflow .com/questions/35141827/   -  person Florent Sebag    schedule 08.01.2020