- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将 C++ 中的 C 样式数组转换为 numpy 数组,但在尝试使用“PyArray_SimpleNewFromData”函数时遇到了问题。原来我需要打电话
import_array()
虽然我不明白如何调用这个函数。每当我尝试调用它时,都会出现我无法理解的编译器错误。例如编写以下简单脚本:
#include <Python.h>
#include <numpy/arrayobject.h>
int main(){
Py_Initialize();
import_array();
Py_Finalize();
return 0;
}
产生编译错误
error: return-statement with no value, in function returning '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
但我仍然不知道如何修复它。
最佳答案
从numpy中读取import_array()
的源码,是一个宏,主要调用_import_array()
正则函数,然后做一些奇怪的异常处理。如果您调用 _import_array()
而不是 import_array()
,编译错误就会消失。而且,至少在我的情况下,行为是正确的(即调用 Numpy C API 函数时没有段错误)
关于python - numpy C API 中的 import_array 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52828873/
我在正确初始化 NumPy C API 时遇到问题。我想我已经将问题隔离到从不同的翻译单元调用 import_array,但我不知道为什么这很重要。 最小工作示例: header1.hpp #ifnd
我正在尝试编译一个 C++ 模块以在 scipy.weave 中使用,它由几个头文件和源 C++ 文件组成。这些文件包含广泛使用 Numpy/C-API 接口(interface)的类和方法。但我没能
我正在尝试在嵌入式 Python 中使用 Numpy。我在 Boost 1.57 中使用 Python 3.4 和 boost::python。为了防止 Python 设置一个信号处理程序来阻止我使用
我正在尝试将 C++ 中的 C 样式数组转换为 numpy 数组,但在尝试使用“PyArray_SimpleNewFromData”函数时遇到了问题。原来我需要打电话 import_array() 虽
//testNumpy.c #include #include #include int main(){ printf("import_array\n");fflush(stdout);
任何人都知道为什么我会收到此错误: Error in sys.excepthook: Traceback (most recent call last): method tm_excepthook
我写了一个简单的代码,试图在 C++ 中使用 numpy。 我的操作系统是 ubuntu16.04 , 与 gcc5.4.0 , Python2.7.12和 numpy1.15.0 . 这是我的代码
操作系统:macOS Sierra 10.12.4 python 发行版:Anaconda python 3.6 我正在学习如何使用 distutils 将 numpy 数组传递给 c++。 运行时出
我是一名优秀的程序员,十分优秀!