Python Ctypes:将返回的C数组转换为Python列表,不使用numpy

2024-04-29 21:52:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python Ctypes访问一些C库。

我连接到的函数之一返回const *double,这实际上是一个双精度数组。

在Python中得到结果时,如何将此数组转换为Python列表?

C函数的签名:

const double *getWeights();

假设它返回一个包含0.13和0.12的数组。 我想要一个python列表:[0.13, 0.12]


Tags: 函数列表精度数组ctypesdoubleconstgetweights
1条回答
网友
1楼 · 发布于 2024-04-29 21:52:30

我用指针成功地解决了这个问题

解决方案:

将函数返回类型定义为POINTER(double_c)(当然,数组实际上是C中的指针):

getWeights_function_handler.restype = POINTER(double_c)

当函数返回时,您可以使用[]运算符来访问数组指针,如在C:

weights = getWeights_function_handler()
list = [weights[i] for i in xrange(ARRAY_SIZE_I_KNOW_IN_ADVANCE)]

相关问题 更多 >