h5py の簡単な使い方
[History] [Last Modified] (2019/04/15 15:06:45)
Recent posts
Qoosky について
プログラミング情報を投稿、有料販売するためのサービスをご利用いただけます。詳細は こちら をご参照ください。
Popular pages

概要

NumPy から扱えるデータをファイルに保存するためのフォーマットとして HDF5 (Hierarchical Data Format) が利用されます。これを Python から扱うためには h5py を利用します。

pip install h5py

サンプルコード

NumPy データの保存

import h5py
import numpy as np

with h5py.File('sample.h5', 'w') as f:
    a = np.array([1,0])
    f.create_dataset('mydataset', data=a)

読み込み

import h5py
f = h5py.File('sample.h5', 'r')

f.keys() #=> [u'mydataset']
dset = f['mydataset']

dset.shape #=> (2,)
dset.dtype #=> dtype('int64')
dset[0] #=> 1
dset[1] #=> 0

dset.name #=> u'/mydataset'

グループとデータセット

グループで他のグループとデータセットを階層化して整理します。

grp = f.create_group('mygroup')
grp2 = grp.create_group('mygroup2')
dset = grp2.create_dataset('mydataset3', (10,), dtype='i')

dset.name #=> u'/mygroup/mygroup2/mydataset3'

以下の二つは同じです。

f['mygroup']['mygroup2']['mydataset3'] == f['mygroup/mygroup2/mydataset3'] #=> True

属性

グループおよびデータセットのメタ情報を属性として保存できます。

grp.attrs['myattr'] = 1
dset.attrs['myattr'] = 2

画像の保存

画像データを NumPy ndarray で用意して HDF5 に保存する場合は以下のようになります。ROI も属性としてデータセットに保存してみます。

import h5py
import matplotlib.image as mpimg

with h5py.File('image.h5', 'w') as f:
    img = mpimg.imread('./myimage.png')
    dset = f.create_dataset('mydataset', data=img)
    dset.attrs['roi'] = ((0,0), (100,100))

読み込んで表示してみます。

import h5py
from matplotlib import pyplot as plt

f = h5py.File('image.h5', 'r')
dset = f['mydataset']
roi = dset.attrs['roi']
part = dset[roi[0][0]:roi[1][0], roi[0][1]:roi[1][1]]
plt.imshow(part)
plt.show()

Uploaded Image

Related pages