我只是在开始编写扩展程序之前尝试创建一个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 api和C array to PyArray)。我做错了什么?
答案 0 :(得分:2)
PyArray_SimpleNew
的典型用法是例如
int nd = 2;
npy_intp dims[] = {3,2};
PyObject *alpha = PyArray_SimpleNew(nd, dims, NPY_DOUBLE);
请注意,nd
的值不得超过数组dims[]
的元素数。