gpt4 book ai didi

python - 将 python 列表转换为 cython ptr

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:02 27 4
gpt4 key购买 nike

对于给定的 ctype 数组或 python 列表,如何将 python 对象转换为 cython void ptr?

我现在这样做的方式是这样的(_arr 是 python 列表):

int *int_t = <int*> malloc(cython.sizeof(int) * len(_arr))
if int_t is NULL:
raise MemoryError()
for i in xrange(len(_arr)):
int_t[i] = _arr[i]

在此之后,我有 int_t,其中有整个数组。但我不希望这个东西更通用并支持其他类型,而不仅仅是 int。我是否必须对每种类型执行相同的操作,或者是否有任何通用方法可以完成此操作?

最佳答案

首先,你应该知道 numpy 数组支持 quite a range of data types 。这里是关于how to work with numpy arrays in cython的总体介绍。如果你想做数字的事情,那就可以了。此外,numpy 确实支持 Python 对象数组。但话又说回来,数组查找得到了优化,但与对象的交互却没有得到优化,因为它们仍然是 Python 对象。

如果您正在考虑使用任意类型执行此操作,即将任意 Python 对象转换为某种 C 类型或 C++ 对象,则必须为每种类型手动执行此操作。这也是有道理的,因为潜在的动态数据结构和静态数据结构之间的自动转换并不总是显而易见的,尤其是对于编译器而言。

关于python - 将 python 列表转换为 cython ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18128725/

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