gpt4 book ai didi

python - numpy C API 中的 import_array 如何工作?

转载 作者:太空狗 更新时间:2023-10-29 23:11:00 28 4
gpt4 key购买 nike

我正在尝试将 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/

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