gpt4 book ai didi

python - 如何将 c_uint 的 ctypes 数组转换为 numpy 数组

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:26 45 4
gpt4 key购买 nike

我有以下 ctypes 数组:

data = (ctypes.c_uint * 100)()

我想创建一个包含来自 ctypes 数组数据的整数值的 numpy 数组 np_data(ctypes 数组显然稍后会填充值)

我已经看到 numpy 中有一个 ctypes 接口(interface)(https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.ctypes.html),但据我所知,这只是从 numpy 数组中获取 ctypes,而不是相反。

我显然可以遍历 data 并逐个填充 np_data 数组项,但我想知道是否有更有效/更直接的方法来完成此任务。

最佳答案

你可以使用 [NumPy]: numpy.ctypeslib.as_array(obj, shape=None) .

>>> import ctypes as ct
>>> import numpy as np
>>>
>>>
>>> CUIntArr10 = ctypes.c_uint * 10
>>>
>>> ui10 = CUIntArr10(*range(10, 0, -1))
>>>
>>> [e for e in ui10] # The ctypes array
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>>
>>> np_arr = np.ctypeslib.as_array(ui10)
>>> np_arr # And the np one
array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1], dtype=uint32)

没有到达特定的代码行(我也没有测试我的假设),但我感觉内容复制是由单个 memcpy 调用完成的,这将使它比通过 Python“手动”执行操作快得多。

关于python - 如何将 c_uint 的 ctypes 数组转换为 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57682751/

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