HDF5のAttribute(属性)の作成・読み取り by Python (h5py)


前置き

HDF5のAttributeを読み取りたいと思って検索したが、日本語の文献はCやfortranによる扱いばかりを説明したものばかりだった。h5pyのドキュメントをさらっと見てもよくわからなかった(たぶん説明が書いてあったんだろうが、初心者ゆえあまり理解できない部分が多かった.....)。
stackoverflowに良い質問と回答があったので(以下リンク)、ほとんどそれの翻訳みたいな記事をここに記しておく(ただし、Attributeの作成に関しては省略する)。

HDF5のAttributeの読み取り

手順は

  1. h5py をインストール
  2. (ファイルを開くときは with がより良いらしい)
  3. GroupやDatasetに .attrs を付けることでそのAttributeにアクセスできる
  4. さらに .keys() を付ければ、Attributeの中身にアクセスできる
import h5py

with h5py.File("path/to/hdf5file", 'a') as f:
    # Attributeには .attrs でアクセスできる
    attr_exmpl = f["path/to/Group_or_Dataset"].attrs
    print("読み込んだAttributeは:", attr_exmpl)

    # Attributeのリストは .keys() で得られる
    print( attr_exmpl.keys() )

    # これを用いて、それぞれのAttributeの中身のデータを表示させる
    for k in attr_exmpl.keys():
        print(  '{} : {}'.format(k, attr_exmpl[k])  )

出力↓

読み込んだAttributeは: <Attributes of HDF5 object at [数字]>

<KeysViewHDF5 ['attr0', 'attr1', 'attr2', 'attr3', 'attr4']>

attr0 : 10
attr1 : [0 1 2 3 4]
attr2 : [[0 1 2]
         [3 4 5]]
attr3 : 0.
attr4 : [1. 1. 1.] 

まとめ

file["path/to/Group_or_Dataset"].attrs["name_of_attribute"] でAttributeの中身を見ることができる。

追記(公式ドキュメント見ればわかる話でした)

前置きでも言い訳したように、公式ドキュメントを読んでも基礎知識の不足であまり理解できず、stackoverflowから具体的な操作を学び、それをこちらに日本語化したわけだが.....

改めてここで紹介した方法と公式ドキュメントを見比べていると、公式ドキュメントの言っていることがわかりました。

なのでこのページは初心者向けということになりますね。