Ошибка сегментации при создании PyArrayObject с использованием PyArray_SimpleNew - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю расширение C для numpy. Функция должна возвращать массив, поэтому я решил создать PyArrayObject с размерами 50x10, используя PyArray_SimpleNew, а затем заполнить его некоторыми значениями. Вот код:

PyArrayObject *a; npy_intp dims[2];
dims[0] = 50; dims[1] = 10;
a = (PyArrayObject *) PyArray_SimpleNew(2, dims, NPY_DOUBLE); 

Однако создание массива a в третьей строке вызывает ошибку сегментации. Есть идеи, в чем может быть проблема?

1 Ответ

0 голосов
/ 17 апреля 2020

Мне нужно было включить import_array () в мою функцию инициализации, как показано ниже. Я не знаю, что делает import_array (), но решаю проблему.

PyMODINIT_FUNC
PyInit_multpy(void)
{
    import_array();
    return PyModule_Create(&multpymodule);
}

PS: Было бы замечательно знать, почему import_array () должен вызываться в PyMODINIT_FUN C. Если кто-то знает, пожалуйста, объясните.

...