您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何将C数组的指针转换为python数组

如何将C数组的指针转换为python数组

如果Data(c_double*DataLength.value)数组,则可以:

a = np.frombuffer(Data) # no copy. Changes in `a` are reflected in `Data`

如果Data为,则POINTER(c_double)可以使用获取numpy数组numpy.fromiter()。它与您的问题相同,但速度更快:

a = np.fromiter(Data, dtype=np.float, count=DataLength.value) # copy

要从POINTER(c_double)实例创建一个numpy数组而不进行复制,您可以使用.from_address()方法

ArrayType = ctypes.c_double*DataLength.value
addr = ctypes.addressof(Data.contents)
a = np.frombuffer(ArrayType.from_address(addr))

要么

array_pointer = ctypes.cast(Data, ctypes.POINTER(ArrayType))
a = np.frombuffer(array_pointer.contents)

两种方法都将POINTER(c_double)实例转换为,(c_double*DataLength)然后再将其传递给numpy.frombuffer()

python 2022/1/1 18:42:25 有305人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶