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.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With