在c扩展段segfaults中创建numpy数组

时间:2014-08-25 21:46:23

标签: python c numpy python-extensions

我只是在开始编写扩展程序之前尝试创建一个numpy数组。这是一个超级简单的程序:

#include <stdio.h>
#include <iostream>
#include "Python.h"
#include "numpy/npy_common.h"
#include "numpy/ndarrayobject.h"
#include "numpy/arrayobject.h"

int main(int argc, char * argv[])
{
    int n = 2;
    int nd = 1;
    npy_intp size = {1};
    PyObject* alpha = PyArray_SimpleNew(nd, &size, NPY_DOUBLE);
    return 0;
}

此程序会在PyArray_SimpleNew来电时出现段错误,我不明白为什么。我试图关注之前的一些问题(例如numpy array C apiC array to PyArray)。我做错了什么?

1 个答案:

答案 0 :(得分:2)

PyArray_SimpleNew的典型用法是例如

int nd = 2;
npy_intp dims[] = {3,2};
PyObject *alpha = PyArray_SimpleNew(nd, dims, NPY_DOUBLE);

请注意,nd的值不得超过数组dims[]的元素数。