備忘録です。かなり初心者なので、どしどしご指摘お願いします。
https://docs.h5py.org/en/latest/index.html
Quick Start Guide
を参考にしています。
1.HDF5とは(超ざっくり)
HDFとは"Hierarchical Data Format"の略であり、ファイル形式の一種。イメージ的には、HDF5ファイルひとつに、フォルダ(ディレクトリ)&ファイルをしまうことができるイメージ。
2.HDF5の中身
中に入っているオブジェクトは、ディレクトリ的存在の「groups」とNumpy配列のような「datasets」の2種類に大別できる。
2-1中身を確認するコード(Anaconda)
私はAnacondaを使用しています。
まず、rootにあるオブジェクトの確認。
# 準備:h5pyパッケージ&HDF5ファイルの読み込み
import h5py
f = h5py.File('読み込むファイル名.h5','r')
# 今いる階層内にあるオブジェクトのリストを表示
list(f.keys())
# こっちでも○
for name in f:
print(name)
次に、個別のデータセットの情報確認
dset = f['データセット名'] #準備
dset.shape #データセット(配列)の形確認
dset.dtype #データセット(配列)のタイプ確認
dset.name #オブジェクトのいる階層確認
などができる。
ちなみに、データ階層は/で区切られ、トップの階層はrootといい、"/"と表される。
2-2データを作成するコード(Anaconda)
こっちを先に書くべきだったかもしれません。hdf5ファイル・group・datasetの作成についてです。
f=h5py.File("mytestfile.hdf5","w")#ファイル作成。'w'は、初期化・新規作成。
dset=f.create_dataset(name="mydataset",shape=(100,),dtype='i')#データセットの作成(root直下)
grp = f.create_group("subgroup")#(サブ)グループの作成
dset2 = grp.create_dataset("another_dataset", (50,), dtype='f')#サブグループ内にデータセット作成
また、次のようにパスをフルで書いてもいける
dset3 = f.create_dataset('subgroup2/dataset_three', (10,), dtype='i')
(補足)Attributes
2−1で、HDF5の中身はgroup&datasetに大別できると書きましたが、Attributesというものもあるらしいです。イメージ的には、データのすぐ隣りにあって、データ属性を示すもの?(自信ないです)
2-3中身を確認するコード(Ubuntu)
h5dump -H ファイル名.h5 #ヘッダーの情報を返す
h5dump -n ファイル名.h5 #データセットの情報を返す
ヘッダーが何なのかはよく分かっていないので勉強してきます。