Escribe un archivo binario sin procesar con datos de matriz NumPy

Me gustaría guardar el contenido de una matriz flotante numpy en un archivo binario en bruto como enteros de 16 bits con signo. Intenté lograr esto usando ndarray.tofile pero no puedo averiguar la cadena de formato correcta. Parece que el archivo se guarda en formato doble, sin importar cómo elijo la cadena de formato. ¿Cómo hago esto? Gracias.

Creo que la forma más fácil de hacer esto es convertir primero el array a int16,

array.astype('int16').tofile(filename) 

Eche un vistazo al módulo de estructura, pruebe este ejemplo:

 import struct import numpy f=open("myfile","wb") mydata=numpy.random.random(10) print(mydata) myfmt='f'*len(mydata) # You can use 'd' for double and < or > to force endinness bin=struct.pack(myfmt,*mydata) print(bin) f.write(bin) f.close() 

Puede usar scipy.io.savemat que permite guardar un diccionario de nombres y matrices en un archivo de estilo Matlab:

 import scipy.io as sio sio.savemat(filename, pydict) 

Aquí pydict puede ser = {‘name1’: np.array1, ‘name2’: np.array2, …}

Para cargar el dict solo necesitas:

 pydict = sio.loadmat(filename)