我在C语言中有一个函数,该函数接受nxm整数矩阵作为n个int指针的数组。每个指针指向大小为m的整数数组的第一个元素,因此它们可以看作是矩阵的行。例如:
void func(int **matrix, int n, int m);
在内存中,该数组类似于此页面上的数组1:http://c-faq.com/aryptr/dynmuldimary.html
我想在Python中使用ctypes使用此C函数。因此,我导入了该文件,并为其提供了以下argtypes:
func.argtypes = [ctypes.POINTER(ctypes.POINTER(ctypes.c_int)), ctypes.c_int, ctypes.c_int]
现在我想给该函数一个numpy 2d数组...
让我们说我有一个二维的numpy int数组:
a = np.random.rand(2,3) * 100
a = a.astype("int")
如何将numpy矩阵a
转换为正确的格式,反之亦然?
我尝试使用:
a.ctypes.data_as(ctypes.POINTER(ctypes.POINTER(ctypes.c_int)))
但这给了我一个自以为是的...