D'entrée et de sortie des tableaux numpy pour h5py
J'ai un code Python dont la sortie est un de la taille de la matrice, dont les entrées sont toutes de 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 de h5py
réduit la taille du fichier considérablement. Alors, disons que j'ai la 2D tableau numpy nommé A
. Comment puis-je les enregistrer dans un h5py fichier?
Aussi, comment puis-je lire le même fichier et de le mettre comme un tableau numpy dans un code différent, car j'ai besoin de faire les manipulations avec le tableau?
- Comment êtes-vous de l'enregistrer avec le
.dat
extension? - pour ce faire, je ne
np.savetxt("output.dat",A,'%10.8e')
- Merci (l'extension à lui seul ne veut pas dire grand chose, ça pourrait être stockées sous forme binaire, ascii...). Sauf si vous avez besoin de fonctionnalités supplémentaires de hdf5, je venais d'utiliser
np.save('output.dat', A)
qui va l'enregistrer dans un format binaire (beaucoup plus rapide, beaucoup moins d'espace utilisé). - mais un autre script python pour être en mesure de le lire comme un tableau 2D quand je l'appelle comme
A = np.loadtxt('output.dat',unpack=True)
- bien sûr, il suffit de déposer la
txt
et le décompresser argument. - donc
h5py
ne pas créer des fichiers plus petits que ceuxnp.save
serait? esth5py
plus vite quenp.save
pour les tableaux de la taille de la donnée dans la question? - Je doute que h5py est plus rapide. Il écrit des données ou non compressée au format gzip qui est assez standard. Il vient de offre plus de confort (attributs, des tranches de hiérarchie similaire, liens, ...).
Vous devez vous connecter pour publier un commentaire.
h5py fournit un modèle de ensembles de données et groupes. Le premier est essentiellement des tableaux et le dernier que vous pouvez penser que des répertoires. Chacun est nommé. Vous devriez regarder la documentation de l'API et des exemples:
http://docs.h5py.org/en/latest/quick.html
Un exemple simple où vous êtes à la création de toutes les données d'avance et vous voulez juste de les enregistrer dans un hdf5 fichier devrait ressembler à quelque chose comme:
Vous pouvez ensuite charger que les données de retour en utilisant:
'
Certainement vérifier les docs:
http://docs.h5py.org
Écrit à hdf5 fichier dépend h5py ou pytables (chacun est différent de l'API python qui se trouve sur le dessus de la hdf5 spécification de fichier). Vous devriez aussi jeter un oeil à d'autres de simples formats binaires fournis par numpy nativement comme
np.save
,np.savez
etc:http://docs.scipy.org/doc/numpy/reference/routines.io.html
data.h5
existe, mais je ne peux pas l'afficher avec HDFView. Je peux lire le contenu avec h5py, mais pas l'inspecter avec HDFView. Aucune idée pourquoi?D'une façon plus propre pour gérer fichier ouvrir/fermer et éviter les fuites de mémoire:
Préparation:
Écrire:
Lire:
[:]
à la fin de la lecture est le catch.