J'ai un code Python dont la sortie est une matrice dimensionnée, dont les entrées sont toutes du type float
. Si je l'enregistre avec l'extension, .dat
la taille du fichier est de l'ordre de 500 Mo. J'ai lu que l'utilisation h5py
réduit considérablement la taille du fichier. Donc, disons que j'ai nommé le tableau numpy 2D A
. Comment l'enregistrer dans un fichier h5py? Aussi, comment lire le même fichier et le mettre sous forme de tableau numpy dans un code différent, car je dois faire des manipulations avec le tableau?
101
.dat
extension?np.savetxt("output.dat",A,'%10.8e')
np.save('output.dat', A)
ce qui l'enregistrera dans un format binaire (beaucoup plus rapide, beaucoup moins d'espace utilisé).A = np.loadtxt('output.dat',unpack=True)
h5py
ne crée- t- il pas des fichiers plus petits que ceuxnp.save
-là? esth5py
plus rapide quenp.save
pour les tableaux de la taille indiquée dans la question?Réponses:
h5py fournit un modèle d' ensembles de données et de groupes . Le premier est essentiellement des tableaux et le second que vous pouvez considérer comme des répertoires. Chacun est nommé. Vous devriez consulter la documentation de l'API et des exemples:
http://docs.h5py.org/en/latest/quick.html
Un exemple simple où vous créez toutes les données à l'avance et que vous souhaitez simplement les enregistrer dans un fichier hdf5 ressemblerait à quelque chose comme:
Vous pouvez ensuite recharger ces données en utilisant: '
Consultez certainement les documents:
http://docs.h5py.org
L'écriture dans le fichier hdf5 dépend de h5py ou de pytables (chacun a une API python différente qui se trouve au-dessus de la spécification du fichier hdf5). Vous devriez également jeter un oeil à d'autres formats binaires simples fournis par numpy nativement tels que
np.save
,np.savez
etc:http://docs.scipy.org/doc/numpy/reference/routines.io.html
la source
data.h5
existe, mais je ne peux pas le voir avec HDFView. Je peux lire le contenu avec h5py, mais pas l'inspecter avec HDFView. Une idée pourquoi?Une façon plus propre de gérer l'ouverture / la fermeture des fichiers et d'éviter les fuites de mémoire:
Préparation:
Écrire:
Lis:
la source
with
fonctionnalité de Python est connue sous le nom de gestionnaire de contexte. Il s'assurera que le fichier est fermé après son utilisation. Plus d'informations sont disponibles dans la documentation officielle: docs.python.org/3/library/contextlib.html