Я заметил, что можно создать заимствованную / украденную ссылку на (3D) массив пустых чисел, используя PyArray_AsCArray
, как показано ниже:
...
float ***matrix_c;
npy_intp dims[3] = {X, Y, Z};
PyArray_Descr *descriptor = PyArray_DescrFromType(NPY_FLOAT32);
PyArray_AsCArray(&matrix_pyobject, (void **)&matrix_c, dims, 3, descriptor);
...
Однако при выполнении этого из разных частейв коде с намерением передать тот же массив, это не будет работать для моего случая.Мне нужно было, чтобы каждая передача давала мне ссылку на внутренний массив, чтобы я мог работать с теми же адресами.
Для этого я обнаружил, что могу получить доступ к внутреннему массиву, не беспокоясь о ссылках, используя PyArray_DATA
, тем не менее, это дает одномерное плоское представление матрицы как void *
, ссылающейся на первый элемент матрицы.
Есть ли способ, которым я могу получить ссылку на внутренний массив, используя этот последний вызови все еще сможете работать с массивом как с массивом 3D C?