【发布时间】:2020-04-16 20:24:32
【问题描述】:
我正在为 numpy 创建一个 C 扩展。该函数应该返回一个数组,所以我决定使用 PyArray_SimpleNew 创建一个尺寸为 50x10 的 PyArrayObject,然后用一些值填充它。代码如下:
PyArrayObject *a; npy_intp dims[2];
dims[0] = 50; dims[1] = 10;
a = (PyArrayObject *) PyArray_SimpleNew(2, dims, NPY_DOUBLE);
但是,在第三行创建数组 a 会产生 Segmentation Fault。知道可能是什么问题吗?
【问题讨论】:
-
也许creating numpy array in c extension segfaults 有帮助,你打电话给
import_array()了吗? -
哦,谢谢。我刚刚发布了一个解决方案,因为我之前没有检查您的评论。无论如何,它确实解决了问题。现在的问题是为什么?
-
"void import_array(void):必须在将使用 C-API 的模块的初始化部分调用此函数。它导入存储函数指针表的模块,并将正确的变量指向它。”从 NumPy C-API 文档文本复制。