Format Atlas

FORMAT COMPARISON

NPY vs NPZ

NPYは1つの配列とdtype・shapeを保存します。NPZは複数のNPYをZIPにまとめ、名前で配列を取り出せます。

最終確認: 2026-09-27

NPYとNPZ、どちらを選ぶ?

単一配列や数値配列のメモリマップにはNPY、複数配列をまとめて渡すにはNPZを選びます。 配列数だけでなく読み込み範囲と圧縮コストで選びます。object dtypeのpickleを信頼できないファイルで許可しないでください。

NPY向き

単一のNumPy配列を型やshapeとともにバイナリ保存する・NumPy対応の科学計算や機械学習処理へ配列を受け渡す

  • 単一配列をテキスト変換せずdtypeとshapeを維持して保存する
  • 対応する非object配列をメモリマップ等で部分アクセスする

NPZ向き

複数のNumPy配列を一つのZIPアーカイブにまとめる・名前付き配列をNumPyの科学計算処理間で受け渡す

  • 複数の配列を一つのファイルに保存する
  • 用途に応じてZIP内の配列を非圧縮または圧縮で保存する

基本情報を比較

NPYとNPZの主な違いを確認できます。

項目NPYNPZ
拡張子.npy.npz
MIME Typeapplication/octet-streamapplication/zip
主な用途単一のNumPy配列を型やshapeとともにバイナリ保存する・NumPy対応の科学計算や機械学習処理へ配列を受け渡す複数のNumPy配列を一つのZIPアーカイブにまとめる・名前付き配列をNumPyの科学計算処理間で受け渡す
圧縮none任意の可逆圧縮
開く方法NumPyの`load`またはNPY対応ツールで開き、dtype、shape、形式バージョンを確認します。大きな配列を部分的に扱う場合はメモリマップ対応と配列の保存方法を確認してください。NumPy `load`またはNPZ対応ツールで開き、含まれる配列名を確認して必要な配列を読み込みます。`NpzFile`を返すAPIでは利用後に閉じ、object dtypeを含む可能性のある不明なファイルではpickle設定を確認してください。
書き出し・変換NumPyの`save`で配列を保存します。CSV等から変換するときは数値型、byte order、shape、欠損値の表し方を変換前後で比較します。object dtypeを含む配列を扱う場合はpickleを有効にする必要があるかを確認し、信頼できないファイルで安易に有効化しないでください。複数配列を`savez`または`savez_compressed`で保存します。非圧縮とDEFLATE圧縮のどちらを使ったか、配列名、dtype、shapeを受け渡し先と確認します。変換後に含まれる配列と値を照合してください。

用途別の選び方

作りたいものや使う場面から選べます。

単一配列をテキスト変換せずdtypeとshapeを維持して保存する

単一のNumPy配列を型やshapeとともにバイナリ保存する・NumPy対応の科学計算や機械学習処理へ配列を受け渡す

NPY向き

対応する非object配列をメモリマップ等で部分アクセスする

単一のNumPy配列を型やshapeとともにバイナリ保存する・NumPy対応の科学計算や機械学習処理へ配列を受け渡す

NPY向き

複数の配列を一つのファイルに保存する

複数のNumPy配列を一つのZIPアーカイブにまとめる・名前付き配列をNumPyの科学計算処理間で受け渡す

NPZ向き

用途に応じてZIP内の配列を非圧縮または圧縮で保存する

複数のNumPy配列を一つのZIPアーカイブにまとめる・名前付き配列をNumPyの科学計算処理間で受け渡す

NPZ向き

確認ポイント 1

NPYの基本単位は1つの配列です。 NPZは配列ごとのNPYを格納するアーカイブです。

使い分け

確認ポイント 2

savezは非圧縮、savez_compressedはDEFLATEを使用します。NPZ拡張子だけでは圧縮の有無は分かりません。

使い分け

選ぶ理由を詳しく

  • 数値NPYはメモリマップできますが、object配列は対象外です。通常のnumpy.loadでNPZメンバーを同様にメモリマップできるとは考えないでください。

よくある質問

NPZは常にNPYより小さくなりますか?

いいえ。配列の内容、圧縮設定、ZIPの付加情報によって変わります。実データで容量と読み込み時間を測ってください。

詳しく見る

参考資料・仕様