У меня есть функция в C, которая принимает целочисленную матрицу nxm как массив из n указателей int.Каждый указатель указывает на первый элемент целочисленного массива размером m, поэтому эти массивы можно рассматривать как строки матрицы.Так, например:
void func(int **matrix, int n, int m);
И в памяти массив выглядит как массив 1 со этой страницы: http://c -faq.com / aryptr / dynmuldimary.html
Я хочу использовать эту функцию C из Python, используя ctypes.Поэтому я импортировал его и дал ему следующие аргументы argtypes:
func.argtypes = [ctypes.POINTER(ctypes.POINTER(ctypes.c_int)), ctypes.c_int, ctypes.c_int]
Теперь я хочу дать функции массив numpy 2d ...
Допустим, у меня есть массив 2d numpy int:
a = np.random.rand(2,3) * 100
a = a.astype("int")
Как преобразовать цифровую матрицу a
в нужный формат и наоборот?
Я пытался использовать:
a.ctypes.data_as(ctypes.POINTER(ctypes.POINTER(ctypes.c_int)))
Но это дает мне seggault ...