Comment lire les fichiers HDF5 en Python
j'essaie de lire les données du fichier hdf5 en Python. Je peux lire le fichier hdf5 en utilisant h5py
, mais je ne peux pas comprendre comment accéder aux données dans le fichier.
mon code
import h5py
import numpy as np
f1 = h5py.File(file_name,'r+')
cela fonctionne et le fichier est lu. Mais comment puis-je accéder aux données à l'intérieur de l'objet fichier f1
?
4 réponses
Lire HDF5
import h5py
filename = 'file.hdf5'
f = h5py.File(filename, 'r')
# List all groups
print("Keys: %s" % f.keys())
a_group_key = list(f.keys())[0]
# Get the data
data = list(f[a_group_key])
Write HDF5
#!/usr/bin/env python
import h5py
# Create random data
import numpy as np
data_matrix = np.random.uniform(-1, 1, size=(10, 3))
# Write data to HDF5
data_file = h5py.File('file.hdf5', 'w')
data_file.create_dataset('group_name', data=data_matrix)
data_file.close()
Voir h5py docs pour plus d'informations.
Alternatives
- JSON: Nice pour l'écriture lisible des données; TRÈS couramment utilisés ( lecture et écriture )
- CSV: format Super simple ( read & write )
- cornichon: Un format de sérialisation Python ( read & write )
- MessagePack ( paquet Python ): représentation Plus compacte ( lecture et écriture )
- HDF5 ( paquet Python ): Sympa pour les matrices ( lecture et écriture )
- XML: existe aussi *sigh* ( lire & écrire )
pour votre application, les éléments suivants peuvent être importants:
- prise en charge par d'autres langages de programmation
- Lecture / écriture de la performance
- compacité (Taille du fichier)
Voir aussi: comparaison des formats de sérialisation des données
dans le cas où vous êtes plutôt à la recherche d'un moyen de créer des fichiers de configuration, vous pourriez vouloir lire mon court article fichiers de Configuration en Python
vous pouvez utiliser Pandas.
import pandas as pd
pd.read_hdf(filename,key)
lecture du fichier
import h5py
data = h5py.File(file_name, mode)
étudier la structure du fichier en imprimant ce que les groupes HDF5 sont présents
for key in data.keys():
print(key) #Names of the groups in HDF5 file.
extraction des données
#Get the HDF5 group
group = data[key]
#Checkout what keys are inside that group.
for key in group.keys():
print(key)
data = group[some_key_inside_the_group].value
#Do whatever you want with data
ce que vous devez faire est de créer un ensemble de données. Si vous regardez le guide quickstart, il vous montre que vous devez utiliser l'objet file pour créer un ensemble de données. Donc, f.create_dataset
et ensuite vous pouvez lire les données. Ceci est expliqué dans le docs .