Utilizo ctypes para acceder a un archivo que lee la función C en python. Como los datos de lectura son enormes y de un tamaño desconocido, utilizo **float
en C.Accediendo al contenido de una matriz variable con ctypes
int read_file(const char *file,int *n_,int *m_,float **data_) {...}
Las funciones mallocs
una matriz 2D, llamados data
, del tamaño adecuado, aquí n
y m
, y copia los valores a los que se hace referencia queridos. Veo siguiente fragmento:
*data_ = data;
*n_ = n;
*m_ = m;
puedo acceder a esta función con el siguiente código Python:
p_data=POINTER(c_float)
n=c_int(0)
m=c_int(0)
filename='datasets/usps'
read_file(filename,byref(n),byref(m),byref(p_data))
Después trato de acces p_data
usando contents
, pero me da un solo valor flotante.
p_data.contents
c_float(-1.0)
Mi pregunta es: ¿Cómo puedo acceder a data
en Python?
¿Qué recomienda? Por favor, no dudes en señalar si dejé algo poco claro.
+1 para ctypes, la mejor biblioteca de python – amwinter