Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyArray_SimpleNewFromData()';的正确类型是什么;什么是模糊的论点?_Python_C_Numpy Ndarray - Fatal编程技术网

Python PyArray_SimpleNewFromData()';的正确类型是什么;什么是模糊的论点?

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

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 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的指针。当然,我可以在文档中查找它,但其中的乐趣何在?