У меня есть основная программа, написанная на 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()?