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()
0
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- Python コードスニペット (条件分岐)if-elif-else sample.py #!/usr/bin/python # -*- coding: utf-8 -*- # コメント内であっても、ASCII外の文字が含まれる場合はエンコーディング情報が必須 x = 1 # 一行スタイル if x==0: print 'a' # 参考: and,or,notが使用可能 (&&,||はエラー) elif x==1: p...
- Python コードスニペット (リスト、タプル、ディクショナリ)リスト range 「0から10まで」といった範囲をリスト形式で生成します。 sample.py print range(10) # for(int i=0; i<10; ++i) ← C言語などのfor文と比較 print range(5,10) # for(int i=5; i<10; ++i) print range(5,10,2) # for(int i=5; i<10;...
- ZeroMQ (zmq) の Python サンプルコードZeroMQ を Python から利用する場合のサンプルコードを記載します。 Fixing the World To fix the world, we needed to do two things. One, to solve the general problem of "how to connect any code to any code, anywhere". Two, to wra...
- Matplotlib/SciPy/pandas/NumPy サンプルコードPython で数学的なことを試すときに利用される Matplotlib/SciPy/pandas/NumPy についてサンプルコードを記載します。 Matplotlib SciPy pandas [NumPy](https://www.numpy
- pytest の基本的な使い方pytest の基本的な使い方を記載します。 適宜参照するための公式ドキュメントページ Full pytest documentation API Reference インストール 適当なパッケージ