3 votes

Comment récupérer un tableau numpy à partir d'un fichier npy.gz

J'ai enregistré un certain nombre d'objets numpy avec le code suivant :

f = gzip.GzipFile('/some/path/file.npy.gz', "w")
np.save(file=f, arr=np.rint(trimmed).astype('int16'))
f.close()

Et maintenant, j'ai un tas de fichiers npy.gz, mais je n'arrive pas à trouver comment les renvoyer de manière programmatique dans python. np.fromtext o np.fromstring ne semblent pas fonctionner, et ne préserveraient pas les informations de forme de toute façon.

J'ai essayé :

gzipfile = gzip.GzipFile('/some/path/file.npy.gz', 'rb')
text = gzipfile.read() 

Et text ressemble à ça :

b'\x93NUMPY\x01\x00F\x00{\'descr\': \'<i2\', \'fortran_order\': False, \'shape\': (132, 248, 291), } \n0\xf80\xf80...'

Mais que puis-je faire ensuite pour récupérer cette chaîne dans un objet numpy ?

7voto

hpaulj Points 6132

Si cela fonctionne pour save à un gzip il peut également fonctionner pour lire à partir d'un fichier. load est la contrepartie de save :

In [193]: import gzip
In [194]: f = gzip.GzipFile('file.npy.gz', "w")
In [195]: np.save(f, np.arange(100))
In [196]: f.close()

In [200]: f = gzip.GzipFile('file.npy.gz', "r")
In [201]: np.load(f)
Out[201]: 
array([ 0,  1,  2,  3,  4,  .... 98, 99])

Il existe également un savez(compressed) qui enregistre plusieurs tableaux dans un zip archives.

0voto

abhinav Points 710

Vous avez fait cela d'une manière ou d'une autre par vos moyens, mais vous pouvez utiliser les fonctions numpy pour sauvegarder et charger les objets plutôt que d'utiliser d'autres fonctions.

Vous pouvez sauvegarder le tableau souhaité en utilisant save() où array_obj est votre tableau que vous souhaitez sauvegarder.

array_file = open('array.npy', 'wb')
numpy.save(array_file, array_obj)

Ensuite, vous pouvez récupérer le tableau souhaité comme suit.

array_file = open('array.npy', 'rb')
array_obj = numpy.load(array_file)

Utilisez en conséquence, j'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X