如何使用SWIG将C 数组转换为Python列表
How to convert a C++ array to a Python list using SWIG?
我正在尝试在C 中编写一块代码,该代码可以产生数组并将其作为python列表返回。我知道我可以使用numpy.i中的Typemaps将列表返回为numpy阵列,但是我使用的某些簇未安装numpy。这个问题与我在此处看到的一些类似问题之间的主要区别是,我想返回一个可变长度的c阵列作为python列表。
剥离的C 例程如下:
/* File get_rand_list.cpp */
#include "get_rand_list.h"
/* Define function implementation */
double* get_rand_list(int length) {
output_list = new double[length];
/* Populate input NumPy array with random numbers */
for (int i=0; i < length; i++)
output_list[i] = ((double) rand()) / RAND_MAX;
return output_list;
}
我希望能够在python中使用它:
from get_rand_list import *
list = get_rand_list(10)
将返回10个随机浮子的python列表。如何使用SWIG Typemaps包装C 例程来执行此操作?如果有一种更简单的方法需要对C 例程进行一些小的修改,这很可能是可以的。
由于您使用的是C ,最容易使用stl:Swig知道如何将std :: vector转换为Python列表,因此请使用
std::vector<double> get_rand_list(int length) { ... }
不要忘记%导入std_vector.i。通常,此技巧非常有用,请参阅SWIG文档的库部分,以获取其他类型的书面。始终偏爱预先编写的打字,而不是自己制作。
这个问题已经回答了几次
从swig返回Double *作为python list
swig c-to-python int array
相关文章:
- 如何将真正的字符串从python c-api转换为python脚本
- 如何在C++中将 Python 字符串转换为其转义版本?
- 使用转换器提升 Python 问题 - 静态链接
- 如何将 Python 双端转换为C++容器?
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- 将Wiimote MAC地址转换为PIN码,从C++转换为Python或Javascript
- 将代码从 Python 转换为 C++ 时出错
- 将 c++ 代码转换为 python,使用运算符?
- 如何将二进制文件头示例代码 (C++/C#) 转换为 Python?
- 在 c++ 中逐行读取文件(将代码从 Python 转换为 C++)
- 如何大致将 cpp 代码结构转换为 python
- 从从该抽象类派生的 Python 对象强制转换C++抽象类C++
- 将数学函数从 Python 转换为 c++
- 从Python转换为C++
- 如何将python的for循环转换为c++
- 如何将OpenCV图像数据从Python转换为C++?
- 如何将 Python 对象转换为 Cython 扩展类型的 std::vector 并返回?
- 从 std::vector<double> 到 Python 列表的转换失败(提升 python)
- 如何在C (转换Python代码)中引用一个函数
- 编织内联类型转换(python)