我正在为 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 会产生分段错误。知道可能是什么问题吗?
我需要在我的 init 函数中包含 import_array() ,如下所示。我不知道 import_array() 的作用,但解决问题。
PyMODINIT_FUNC
PyInit_multpy(void)
{
import_array();
return PyModule_Create(&multpymodule);
}
PS:如果知道为什么必须在 PyMODINIT_FUNC 中调用 import_array() 就太好了。如果有人知道请解释一下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)