web-dev-qa-db-fra.com

Écrire un fichier binaire brut avec les données du tableau NumPy

J'aimerais enregistrer le contenu d'un tableau numpy float dans un fichier binaire brut sous forme d'entiers signés 16 bits. J'ai essayé d'accomplir cela en utilisant ndarray.tofile mais je n'arrive pas à trouver la bonne chaîne de format. Il semble que le fichier soit enregistré au format double, quelle que soit la façon dont je choisis la chaîne de formatage. Comment je fais ça? Merci.

12
Peter

Je pense que le moyen le plus simple de faire est de convertir d’abord le tableau en int16,

array.astype('int16').tofile(filename)
27
Bi Rico

Regardez le module struct, essayez cet exemple:

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()
8
Jason Morgan

Vous pouvez utiliser scipy.io.savemat qui permet de sauvegarder un dictionnaire de noms et de tableaux dans un fichier de style Matlab:

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

Ici, pydict peut être = {'nom1': np.array1, 'nom2': np.array2, ...}

Pour charger le dict, il vous suffit de:

pydict = sio.loadmat(filename)
0
Alexey Antonenko