C++返回 Numpy 数组的 Python 扩展模块
C++ extension module for Python returning a Numpy array
我正在尝试使用SWIG为C++Python创建一个扩展模块,它可以将Numpy数组返回给Python。这个 numpy 数组是多维的,每个单元格都可以有一个值或一个值列表(int 64, [int32, int32] 等]。我能够从C++将一个普通数组返回到 Python。谁能指导我如何进行这项工作?我遇到了numpy.i,arrayinterface,typemap,我不太确定如何开始。有人可以在这方面指导我吗?谢谢。
我认为Numpy C API是一个很好的方法。您仍然可以使用 SWIG。但我强烈建议不要使用 SWIG 类型图,它们非常复杂。相反,您可以在SWIG签名中接受并返回Numpy数组作为PyObject*指针,并使用C API构建/提取它们。SWIG将正确包装它。
如果这是你的第一个 Python 扩展,请务必阅读 Python C API 介绍。至少,您需要了解引用计数的 API 协定。
另一种选择是实现 numpy 理解的缓冲区协议 API。
另一种选择是Boost.Python,如果你不喜欢C代码进入C++世界。我没有这方面的经验。就我个人而言,我喜欢Python C API,因为它的复杂性很低。
相关文章:
- C++返回 Numpy 数组的 Python 扩展模块
- 我应该包含什么来制作 boost.python 扩展?
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- Python & C-C++ 扩展模块案例段故障
- 带有CMake和SetupTools的Python 2.7 C++扩展
- Python 和 C++ (Pybind11):Python 扩展模块导入错误
- Python 扩展中错误,C++ 中的 SFML
- 在 Linux 上从 Visual Studio Code 调试 Python C++ 扩展
- 在Windows元组上构建64位Python扩展:未声明的标识符
- 在用 C++ 编写的 Python 3 扩展中,如何将 wstring 对象传递给 Python 代码
- 如何改进 Python C 扩展文件行读取
- 编译 PythonService.cpp来自 win32 Python 扩展构建
- 如何修复"UnicodeDecodeError:"utf-8"编解码器无法解码字节时使用Python C扩展?
- 如何使用纯Python扩展API(Python3)包裹C 对象
- Python 扩展:对 C 部分和 C++ 部分使用不同的编译器标志
- 如何导入或安装预构建的Python扩展模块(C )(即未通过Setuptools编译的库)
- 基于python版本的C++python扩展的输出差异
- Python C++扩展 - 内存泄漏或访问冲突
- Python 扩展方法的分段错误
- 如何在通过python扩展访问的C++库中捕获AddressSanitizer引发的错误