You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ctypes.POINTER(ctypes.c_float)的指定片段转换为numpy.array?

解决ctypes.POINTER(c_float)切片转换为numpy数组的问题

可以直接通过指针偏移的方式实现,具体操作如下:

  1. 确定起始指针位置:ctypes指针支持加法运算,偏移量对应目标起始元素的0-based索引(若要取第10至20个元素,对应起始索引为9,共10个元素),指针加法会自动按c_float的字节大小偏移地址。
  2. 转换为numpy数组:将偏移后的指针传入numpy.ctypeslib.as_array,指定目标形状即可。

示例代码:

import ctypes
import numpy as np

# 假设已存在指向100个float数据的指针float_pointer
float_pointer = ctypes.POINTER(ctypes.c_float)()

# 提取第10到20个元素(对应0-based索引9到19,共10个)
start_ptr = float_pointer + 9
float_slice = np.ctypeslib.as_array(start_ptr, shape=(10,)).copy()

补充说明

  • 若不需要独立的numpy数组(仅需内存视图),可以去掉.copy(),此时数组会直接映射原内存空间,原内存数据变化会同步影响该数组。

内容的提问来源于stack exchange,提问作者Michael Liu CN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:09:39