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 ?

24
demandé sur Martin Thoma 2015-01-27 15:32:57

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

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

50
répondu Martin Thoma 2017-11-28 13:48:55

vous pouvez utiliser Pandas.

import pandas as pd
pd.read_hdf(filename,key)
11
répondu Danny 2015-01-27 12:38:53

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
2
répondu Daksh 2018-08-02 01:12:43

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 .

1
répondu Games Brainiac 2015-01-27 12:45:12