Ik probeer gegevens uit het hdf5-bestand in Python te lezen. Ik kan het hdf5-bestand lezen met h5py
, maar ik weet niet hoe ik toegang kan krijgen tot de gegevens in het bestand.
Mijn code
import h5py
import numpy as np
f1 = h5py.File(file_name,'r+')
Dit werkt en het bestand wordt gelezen. Maar hoe krijg ik toegang tot gegevens in het bestandsobject f1
?
Antwoord 1, autoriteit 100%
HDF5 lezen
import h5py
filename = "file.hdf5"
with h5py.File(filename, "r") as f:
# List all groups
print("Keys: %s" % f.keys())
a_group_key = list(f.keys())[0]
# Get the data
data = list(f[a_group_key])
Schrijf HDF5
import h5py
# Create random data
import numpy as np
data_matrix = np.random.uniform(-1, 1, size=(10, 3))
# Write data to HDF5
with h5py.File("file.hdf5", "w") as data_file:
data_file.create_dataset("group_name", data=data_matrix)
Zie h5py-documentenvoor meer informatie.
Alternatieven
- JSON: leuk voor het schrijven van door mensen leesbare gegevens; ZEER vaak gebruikt (lezen en schrijven)
- CSV: Supereenvoudig formaat (lezen en schrijven)
- augurk: een Python-serialisatie-indeling (lezen en schrijven)
- MessagePack(Python-pakket): compactere weergave (lezen en schrijven)
- HDF5(Python-pakket): leuk voor matrices (lezen en schrijven)
- XML: bestaat ook *zucht* (lees& schrijf)
Voor uw aanvraag kan het volgende van belang zijn:
- Ondersteuning door andere programmeertalen
- Lees-/schrijfprestaties
- Compactheid (bestandsgrootte)
Zie ook: Vergelijking van gegevensserialisatie-indelingen
Als je liever op zoek bent naar een manier om configuratiebestanden te maken, lees dan misschien mijn korte artikel Configuratiebestanden in Python
Antwoord 2, autoriteit 17%
Het bestand lezen
import h5py
f = h5py.File(file_name, mode)
De structuur van het bestand bestuderen door af te drukken welke HDF5-groepen aanwezig zijn
for key in f.keys():
print(key) #Names of the groups in HDF5 file.
De gegevens extraheren
#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][()]
#Do whatever you want with data
#After you are done
f.close()
Antwoord 3, autoriteit 12%
je kunt panda’s gebruiken.
import pandas as pd
pd.read_hdf(filename,key)
4
Wat u hoeft te doen is een dataset maken. Als u de QuickStart-gids bekijkt, wordt u weergegeven die u het bestandsobject moet gebruiken om een dataset te maken. Dus, f.create_dataset
en dan kunt u de gegevens lezen. Dit wordt uitgelegd in de docs .