我是新手操作C中的numpy数组.这里有一段代码让我1)将1-D,64-bit-float numpy数组列表传递给C和2)循环遍历每个数组,打印其内容.
#include
#include
#include
#include "Python.h"
#include "numpy/arrayobject.h"
#include "list_of_ndarrays_lib.h"
void print_all(PyObject *list) {
int i, j;
PyArrayObject *arrayObj;
double *arrayData;
for (i = 0; i < PyObject_Length(list); i++) {
arrayObj = (PyArrayObject *) PyList_GET_ITEM(list, i);
arrayData = PyArray_DATA(arrayObj);
for (j = 0; j < PyArray_SHAPE(arrayObj)[0]; j++) {
printf("%f ", arrayData[j]);
}
printf("\n");
}
}
这段代码可以工作,但是PyArray_SHAPE(arrayObj)[0]并没有推广到n维数组,如果我用PyArray_SIZE(arrayObj)替换它,我会得到一个分段错误.
PyArray_SIZE我做错了什么?