我已经注意到,可以使用PyArray_AsCArray
来创建对3D numpy浮点数数组的借用/被盗引用,如下所示:
...
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数组使用?
答案 0 :(得分:1)
找到了解决此问题的简便方法,因此我将其发布,以防万一其他人对此感到困惑。
我尝试通过2D结构的指针来解决它,但最后,我需要的只是将其转换为3D结构的指针:
web