web-dev-qa-db-fra.com

Comment lire les fichiers HDF5 en Python

J'essaie de lire les données d'un fichier hdf5 en Python. Je peux lire le fichier hdf5 à l'aide de h5py, mais je ne peux pas comprendre comment accéder aux données qu'il contient.

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?

34
Sameer Damir

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])

Écrire 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.

Des alternatives

Pour votre application, les éléments suivants peuvent être importants:

  • Prise en charge par d'autres langages de programmation
  • Lecture/écriture
  • Compacité (taille de fichier)

Voir aussi: Comparaison des formats de sérialisation des données

Si vous cherchez plutôt un moyen de créer des fichiers de configuration, vous pouvez lire mon court article Fichiers de configuration en Python

63
Martin Thoma

vous pouvez utiliser des pandas.

import pandas as pd
pd.read_hdf(filename,key)
15
Danny

Lecture du fichier  

import h5py

f = h5py.File(file_name, mode)

Etudier la structure du fichier en imprimant quels groupes HDF5 sont présents

for key in f.keys():
    print(key) #Names of the groups in HDF5 file.

Extraire les données

#Get the HDF5 group
group = f[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

#After you are done
f.close()
3
Daksh

Ce que vous devez faire, c'est créer un jeu de données. Si vous consultez le guide de démarrage rapide, il vous indique que vous devez utiliser l'objet fichier pour créer un jeu de données. Donc, f.create_dataset et ensuite vous pourrez lire les données. Ceci est expliqué dans la docs .

1
Games Brainiac

Pour lire le contenu du fichier .hdf5 sous forme de tableau, vous pouvez procéder comme suit:

> import numpy as np 
> myarray = np.fromfile('file.hdf5', dtype=float)
> print(myarray)
0
Raza

Utilisez le code ci-dessous pour lire les données et les convertir en tableau numpy

import h5py
f1 = h5py.File('data_1.h5', 'r')
list(f1.keys())
X1 = f1['x']
y1=f1['y']
df1= np.array(X1.value)
dfy1= np.array(y1.value)
print (df1.shape)
print (dfy1.shape)
0
ashish bansal