Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ctypes pointer into the middle of a numpy array

I know how to get a ctypes pointer to the beginning of a numpy array:

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

however, I need to pass the pointer to, let's say, element 100, without copying the array. There must be an easy way to do it but cannot find it.

Any hint appreciated.

like image 210
Andrea Zonca Avatar asked Jun 25 '11 20:06

Andrea Zonca


1 Answers

Slicing a numpy array creates a view, not a copy:

>>> 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)
like image 119
senderle Avatar answered Oct 20 '22 06:10

senderle