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