Python PyArray_SimpleNewFromData()';的正确类型是什么;什么是模糊的论点?
numpy C API文档给出了以下特征:Python PyArray_SimpleNewFromData()';的正确类型是什么;什么是模糊的论点?,python,c,numpy-ndarray,Python,C,Numpy Ndarray,numpy C API文档给出了以下特征: PyObject* PyArray_SimpleNewFromData(int nd, npy_intp* dims, int typenum, void *data) 请注意,dims本质上是int**类型。然而,我发现的所有使用此函数和类似函数的示例都传递int*类型,例如 当将指针传递给整数时,我的代码工作正常,但编译器会抱怨“dims”参数的指针类型不匹配 PyObject *arr; import_array(); npy_float
PyObject* PyArray_SimpleNewFromData(int nd, npy_intp* dims, int typenum, void *data)
请注意,dims本质上是int**类型。然而,我发现的所有使用此函数和类似函数的示例都传递int*类型,例如
当将指针传递给整数时,我的代码工作正常,但编译器会抱怨“dims”参数的指针类型不匹配
PyObject *arr;
import_array();
npy_float d[] = {1, 2, 3, 4};
npy_intp dims[] = {sizeof d / sizeof *d};
arr = PyArray_SimpleNewFromData(1, dims, NPY_FLOAT, d);
根据我对函数工作原理的理解,我认为int*应该是正确的类型,因为它只是一个输入参数,通知函数每个数组维度有多少个条目。我不明白为什么文档和编译器都期望int**事件,尽管int*可以工作
那么,这是如何做到的呢?您的困惑似乎源于对什么是
npy\u intp
的误解。它不是int*
的typedef。它是一个足够大的整数类型,可以容纳指针。也许还可以用它来标记?谢谢!我仔细研究了numpy的深度嵌套的头文件,以找出npy_intp是什么,它看起来像指向int的指针。当然,我可以在文档中查找它,但其中的乐趣何在?