1

This maybe asked before, but I need more clarification. I am working on a project where I need to send a 3D array from C to the embedded Python function.

I referred this, but couldn't get it to work for a 3D array. Also, I tried including numpy/arrayobject.h, but it gave me a depreciation warning. The structure of my code follows as below:

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;
}

How should I modify my code to send the 3D array? Also I will be getting back a 3D array from the Python. How should I declare the datatype for the return value from the Python function?

0 Answers0