2011-06-25 18 views
7

sé cómo conseguir un puntero ctypes para el inicio de una serie numpy:ctypes puntero en medio de una matriz numpy

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

sin embargo, tengo que pasar el puntero a, digamos, el elemento 100 , sin copiar la matriz. Debe haber una manera fácil de hacerlo pero no puede encontrarlo.

Cualquier sugerencia apreciada.

Respuesta

11

Cortando una matriz numpy crea una vista, no una copia:

>>> 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) 
Cuestiones relacionadas