我试图将c ++中的c样式数组转换为numpy数组,并在尝试使用“ PyArray_SimpleNewFromData”函数时遇到问题。原来我需要打电话
import_array()
尽管我不明白如何调用此函数。每当我尝试调用它时,我都会得到编译器错误,我无法理解。例如,编写以下简单脚本:
#include <Python.h>
#include <numpy/arrayobject.h>
int main(){
Py_Initialize();
import_array();
Py_Finalize();
return 0;
}
产生编译器错误
错误:函数返回'int'[-fpermissive]中没有值的返回语句 import_array();
我看了几个例子,例如:
Numpy C-Api example gives a SegFault
PyArray_SimpleNewFromData example
https://codereview.stackexchange.com/questions/92266/sending-a-c-array-to-python-numpy-and-back
Numpy/CAPI error with import_array() when compiling multiple modules
但是无论我尝试什么(即使看似遵循这些示例),我似乎也遇到了上面的编译器错误。我想念什么或做错什么?欢迎解释如何调用import_array()函数。感谢您的帮助!
更新:
我正在使用python 2.7.11,我认为这可能与此处讨论的内容有关:
https://github.com/clemenscorny/brisk/issues/3
但是我仍然不知道如何解决它。
答案 0 :(得分:0)
从numpy读取<Author>
Ignacy Krasicki
</Author>
<Title>
The world is broken
</Title>
<Contents>
It is allowed to go crazy with young people, be slow to deceive old people.
(there is more text)
</Content>
的源代码,它是一个主要调用import_array()
常规函数的宏,然后执行一些奇怪的异常处理。如果您调用_import_array()
而不是_import_array()
,则编译错误将消失。而且,至少就我而言,行为是正确的(即调用Numpy C API函数时没有段错误)