Имам C код, който в момента включвам в Python с помощта на Cython. Кодът C се занимава с 2D масиви във формат указател към указател, т.е. разпределянето на памет за масив 3x3 се извършва по следния начин
float **A = (float **)malloc(3*sizeof(float *));
for (i=0; i<3; i++) A[i] = (float *)malloc(3*sizeof(float));
Следвам този урок от уикито на Cython Github. Имайте предвид, че те съхраняват 2D масива линейно.
Моят въпрос тогава е какъв е най-ефективният начин за промяна на кода на Cython (по-специално обработката на масива Numpy), така че да работи за функция void c_multiply (float** array, float multiplier, int m, int n)
да речем (т.е. сега се занимава с масиви от указател към указател).
Забележете, че в момента се справям с това, като имам две функции за конвертиране в C кода, който се извиква първоначално и в края, за да промени индексирането от линейно към указател към указател и обратно. В идеалния случай обаче не искам да променям C кода.