gpt4 book ai didi

python - 当我为 numpy 编写自己的 C 扩展时发生错误

转载 作者:太空狗 更新时间:2023-10-30 01:02:52 26 4
gpt4 key购买 nike

我正在尝试为 numpy 编写一个 C 扩展来对大数组进行一些计算,但是当我使用“PyArray_SimpleNew”或“PyArray_FromDims”来获取 PyArrayObject 时我遇到了一个大问题。这是我的代码:

#include<stdio.h>
#include "Python.h"
#include"arrayobject.h"

static PyObject *MyExtGFV(PyObject *self, PyObject *args)
{
npy_intp dims = 1;
PyArray_SimpleNew(1, &dims, PyArray_FLOAT32);
retuurn Py_BuildValue("i", 1);
}
static PyMethodDef my_ext_methods[] =
{
{"GFV", MyExtGFV, METH_VARARGS, "used to generate feature vectors"},
{NULL, NULL}
}

PyMODINIT_FUNC initMyExt(void)
{
Py_InitModule("MyExt", my_ext_methods);
}

为了调试它,我删除了函数 MyExtGFV() 中的大部分代码,只留下

PyArray_SimpleNew(1, &dims, PyArray_FLOAT32);   

在其中,但是当我导入它并在我的 python 代码中使用它时,它说“python 已停止工作”。我已经用谷歌搜索了这个问题很长时间,但似乎没有其他人有同样的问题,这几乎让我发疯,任何帮助将不胜感激!!!

最佳答案

OK,终于明白了,init函数应该这样写:

PyMODINIT_FUNC initMyExt(void)
{
Py_InitModule("MyExt", my_ext_methods);
import_array();
}

“导入数组();”是numpy所必需的,谢天谢地~~

关于python - 当我为 numpy 编写自己的 C 扩展时发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com