указатель ctypes в середину массива - PullRequest
7 голосов
/ 26 июня 2011

Я знаю, как получить указатель ctypes на начало массива numpy:

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

однако мне нужно передать указатель, скажем, на элемент 100, без копирования массива . Должен быть простой способ сделать это, но он не может его найти.

Любая подсказка приветствуется.

1 Ответ

11 голосов
/ 26 июня 2011

Разрезание массива с пустым фрагментом создает представление, а не копию:

>>> 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)
...