PythonでHDF5ファイルを扱うためには、H5pyライブラリが必要です。
また、機械学習を行う上でHDF5ファイルがしばしば出てきます。
そのため、Pythonで機械学習を行う上ではH5pyを避けては通れません。
そもそも、HDF5はどんなファイルなのか?
そして、どうすればPythonでHDF5を扱うことができるのか?
この記事では、これらの疑問に回答する内容をまとめています。
急にHDF5ファイルを触らなければならない人にとって、参考となる内容になっています。
本記事の内容
- H5pyとは?
- H5pyのシステム要件
- H5pyのインストール
- H5pyの動作確認
それでは、上記に沿って解説していきます。
H5pyとは?
H5pyは、HDF5形式のファイルにアクセスするためのPython用ライブラリです。
そして、H5pyを知るにはHDF5を知る必要があります。
H5pyが対象とするHDF5の特徴は、以下。
- 膨大な量の数値データを保存できる
- データを辞書やNumPy配列として保存できる
- 多くの言語で利用ができる
上記で言う多くの言語には、以下のモノがあります。
- Go
- Python
- Perl
- R
- Rust
- C/C++
- Java
有名どころのプログラム言語は、ほぼサポートしています。
PHPとRubyがいないぐらいですかね。
あと、ここで記載した以外にも、サポートしている言語は存在しています。
上記の特徴を見る限りで受けたHDF5のイメージは、以下となります。
「どこでも簡単に導入できる簡易データベース」
また、HDF5はバイナリ形式です。
だから、より一層データベースという印象を受けます。
ちなみに、HDF5形式のファイルは機械学習でよく利用されます。
そもそも、私は機械学習の過程で初めてHDF5ファイルに触れました。
以上が、HDF5の説明です。
このHDF5をPythonで扱うことができるのが、H5pyライブラリということになります。
次に、H5pyのシステム要件を確認しましょう。
H5pyのシステム要件
H5pyの最新バージョンは、3.1.0となります。
2020年10月にリリースされています。
その最新バージョンでは、Python 3.6以降がサポート対象です。
サポートしているPythonバージョンの範囲は、狭いですね。
この部分は、要注意となります。
対象OSは、以下。
- Windows
- macOS
- Linux
つまり、基本的にはどこでも動くということです。
ちなみに、今回は以下の環境にH5pyをインストールします。
- Windows 10
- Python 3.8.6
以上が、H5pyのシステム要件となります。
それでは、H5pyをインストールしていきます。
H5pyのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 20.3.3 setuptools 51.1.1
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
いざ、H5pyのインストールです。
H5pyのインストールは、以下のコマンドで行います。
pip install h5py
インストールは、一瞬で終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ---------- ------- h5py 3.1.0 numpy 1.19.5 pip 20.3.3 setuptools 51.1.1
NumPyのパッケージが、同時にインストールされています。
やはり、HDF5にNumPy配列を保存できる以上は必須ということなのでしょう。
以上、インストールは問題ないと確認できました。
それでは、動作確認を行います。
H5pyの動作確認
H5pyの動作確認で参考にしたサイト
https://docs.h5py.org/en/stable/quick.html
以下の流れで動作確認を行います。
- HDF5ファイルの作成
- HDF5ファイルの読み込み
HDF5ファイルの作成
「test」というキーでデータセットを2×2で用意。
そして、値をセット。
そのデータセットを「test.hdf5」というファイルに保存します。
同じフォルダ上にtest.hdf5が作成されます。
上記の内容を下記コードで表現しています。
import h5py with h5py.File("test.hdf5", "w") as f: dset = f.create_dataset("test", (2, 2)) dset[0, 0] = 3.0 dset[0, 1] = 10.0
上記のプログラムを実行すると、同じフォルダ上にtest.hdf5ファイルが作成されています。
HDF5ファイルの読み込み
作成したtest.hdf5ファイルを読み込みます。
そして、セットした値を表示。
上記を以下のコードで表現しています。
import h5py with h5py.File("test.hdf5", "r") as f: data_1 = f["test"][0, 0] data_2 = f["test"][0, 1] print(data_1) print(data_2)
このコードを実行すると、以下の表示となります。
3.0 10.0
ちゃんとtest.hdf5の内容を読み込めています。
ちなみに、test.hdf5の内容はバイナリのため、普通は見ることができません。
しかし、HDF5ファイル専用のビューワーを使えば、内容を見ることができます。
でも、今回の内容程度であれば、HDF5をビューワーで見る必要はありませんけどね。