FORMAT COMPARISON
NPZ vs HDF5
NPZは名前付きのNPY配列をZIPにまとめます。HDF5はグループ・データセット・属性を階層で管理できます。
NPZとHDF5、どちらを選ぶ?
NumPyで配列をまとめて渡すならNPZ、配列の一部を繰り返し読む用途や階層管理にはHDF5を検討します。 NPZの遅延読み込みはメンバーを必要時に読む方式であり、通常のnumpy.loadで圧縮メンバー内の任意範囲だけを直接読むこととは異なります。HDF5も常に高速とは限らず、実際の読み込み範囲とチャンク形状で比較してください。
NPZ向き
複数のNumPy配列を一つのZIPアーカイブにまとめる・名前付き配列をNumPyの科学計算処理間で受け渡す
- 複数の配列を一つのファイルに保存する
- 用途に応じてZIP内の配列を非圧縮または圧縮で保存する
HDF5向き
大規模な科学・技術データを階層構造で保存する・多次元配列と関連メタデータを一つのコンテナーで扱う
- グループ・データセット・属性で複雑なデータを整理する
- 部分的な読み書きやデータセット単位の圧縮が必要な科学ワークフロー
基本情報を比較
NPZとHDF5の主な違いを確認できます。
| 項目 | NPZ | HDF5 |
|---|---|---|
| 拡張子 | .npz | .h5、.hdf5 |
| MIME Type | application/zip | |
| 主な用途 | 複数のNumPy配列を一つのZIPアーカイブにまとめる・名前付き配列をNumPyの科学計算処理間で受け渡す | 大規模な科学・技術データを階層構造で保存する・多次元配列と関連メタデータを一つのコンテナーで扱う |
| 圧縮 | 任意の可逆圧縮 | optional_dataset_filters |
| 開く方法 | NumPy `load`またはNPZ対応ツールで開き、含まれる配列名を確認して必要な配列を読み込みます。`NpzFile`を返すAPIでは利用後に閉じ、object dtypeを含む可能性のある不明なファイルではpickle設定を確認してください。 | HDF5対応の可視化・解析ソフトやライブラリで開き、グループ階層、データセットの形状と型、属性、フィルターを確認します。同じHDF5でもアプリケーション固有の規約があるため、作成元の仕様書も参照してください。 |
| 書き出し・変換 | 複数配列を`savez`または`savez_compressed`で保存します。非圧縮とDEFLATE圧縮のどちらを使ったか、配列名、dtype、shapeを受け渡し先と確認します。変換後に含まれる配列と値を照合してください。 | CSV、Parquet、FITSなどへ変換する前に、階層、配列の次元・型、属性、単位、座標系をどう写すか決めてください。変換先で表現できない構造や属性は失われる可能性があるため、元ファイルを保管し値とメタデータを照合します。 |
用途別の選び方
作りたいものや使う場面から選べます。
複数の配列を一つのファイルに保存する
複数のNumPy配列を一つのZIPアーカイブにまとめる・名前付き配列をNumPyの科学計算処理間で受け渡す
NPZ向き用途に応じてZIP内の配列を非圧縮または圧縮で保存する
複数のNumPy配列を一つのZIPアーカイブにまとめる・名前付き配列をNumPyの科学計算処理間で受け渡す
NPZ向きグループ・データセット・属性で複雑なデータを整理する
大規模な科学・技術データを階層構造で保存する・多次元配列と関連メタデータを一つのコンテナーで扱う
HDF5向き部分的な読み書きやデータセット単位の圧縮が必要な科学ワークフロー
大規模な科学・技術データを階層構造で保存する・多次元配列と関連メタデータを一つのコンテナーで扱う
HDF5向き確認ポイント 1
NPZは配列ごとのアーカイブメンバーを名前で選びます。 HDF5はデータセット内の範囲を選択して読み込めます。
使い分け確認ポイント 2
savezは非圧縮、savez_compressedはDEFLATEを使います。HDF5の圧縮は設定次第で、チャンク化したデータセットでは一要素でもチャンク全体が処理に関わります。
使い分け選ぶ理由を詳しく
- HDF5の属性に単位等を記録できますが、その意味は合意が必要です。移行では名前・dtype・shape・軸順序・値を照合し、必要なフィルターを確認します。信頼できないNPZのobject配列でpickleを許可しないでください。
よくある質問
NPZからHDF5に移せばそのまま意味も保存できますか?
自動的には保証されません。配列名とグループの対応、単位や欠測値の規約を決め、変換後の値を確認してください。