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



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!