Как передать многомерный массив из C в встраивание функции Python - PullRequest
0 голосов
/ 17 февраля 2019

Это, возможно, спросили раньше, но мне нужно больше разъяснений.Я работаю над проектом, в котором мне нужно отправить трехмерный массив из C во встроенную функцию Python.

Я упомянул это , но не смог заставить его работать для 3D-массива.Кроме того, я попытался включить numpy / arrayobject.h, но он дал мне предупреждение об амортизации.Структура моего кода выглядит следующим образом:

static PyObject *pName, *pModule,*pDict,*pFunc,
                *pArgs, *pValue, *pPredReturn;

int main(){

  time_t t;
  srand((unsigned) time(&t));

  int A[1][1280][64] = {{{0}}};

for (int j = 0; j<64; j++){
  for(int i = 0; i<1280; i++) {
        A[0][i][j] = (rand() % 2);
     }
}

  Py_Initialize();

  PyObject *sys = PyImport_ImportModule("sys");
  PyObject *path = PyObject_GetAttrString(sys, "path");
  PyList_Append(path, PyUnicode_FromString("."));


  // Build name object
    pName = PyUnicode_FromString("interface");

    // Load module object
    pModule = PyImport_Import(pName);

    // pDict is a borrowed reference
    pDict = PyModule_GetDict(pModule);

    // pFunction
    pFunc = PyDict_GetItemString(pDict, "some_function");

     // What should go here.. ? How should I proceed?
     if (PyCallable_Check(pFunc))
    {
             pArgs = PyTuple_New(1);
             pValue = ...  

            PyTuple_SetItem() ...
            pFuncReturn = PyObject_CallObject(pFunc, pArgs); 
    }

  Py_Finalize();

  return 0;
}

Как мне изменить мой код для отправки массива 3D?Также я буду возвращать 3D-массив из Python.Как мне объявить тип данных для возвращаемого значения из функции Python?

...