ctypes指针指向numpy数组中间部分

7 投票
1 回答
1321 浏览
提问于 2025-04-16 20:17

我知道怎么获取一个指向numpy数组开头的ctypes指针:

a = np.arange(10000, dtype=np.double)
p = a.ctypes.data_as(POINTER(c_double))
p.contents
c_double(0.0)

但是,我需要把指针传递给,比如说,第100个元素,而不复制数组。 一定有简单的方法可以做到这一点,但我找不到。

任何提示都很感谢。

1 个回答

11

切片一个numpy数组会创建一个视图,而不是一个副本:

>>> a = numpy.arange(10000, dtype=numpy.double)
>>> p = a[100:].ctypes.data_as(ctypes.POINTER(ctypes.c_double))
>>> p.contents
c_double(100.0)
>>> a[100] = 55
>>> p.contents
c_double(55.0)

撰写回答