Cómo obtener la dirección de memoria de una matriz numpy para C

Construí una matriz numpy ::

a=np.ndarray([2,3]) 

Entonces quiero ver dónde están sus datos:

 a.data >>>Out[213]:  a.data >>>Out[214]:  a.data >>>Out[215]:  

¿Por qué cada vez la dirección offset es diferente? si quiero transferir los datos a la función de ca usando c_types por ::

 ctypes_array = (ctypes.c_char * a.size * 8).from_address(ptr) 

¿Cómo debo obtener el valor de ptr?

Además, eche un vistazo a ndarray.__array_interface__ , que es un dict que contiene toda la información que está buscando.

En tu caso,

 pointer, read_only_flag = a.__array_interface__['data'] 

a.data podría ser una propiedad cuya función getter crea un nuevo objeto de búfer (metadatos) en cada llamada.

Para obtener la dirección, vea cómo se implementa numpy.ctypeslib.as_ctypes() .