リストに格納された複数の narray をバイナリファイル(npz)にまとめて保存・読み込みする方法


リストに格納された大量のパラメータをファイルに保存したい

機械学習のプログラムを書いていると、リストに格納した大量のモデルパラメータを保存・読み込みしたい場合があります。

書き込み

以下のとおり、リストを辞書に変換して numpy.savez でバイナリファイルに一気に書き込みます。

import numpy as np
import random

M = 1000
N = 5

# サンプルデータを作る(N 次元ベクトルを M 個生成してリストに格納)
mu = [2 * np.random.rand(N, 1) - 1 for _ in range(M)]

# N 次元ベクトルを辞書に格納する
d = {'mu_' + str(i): mu[i] for i in range(M)}

# 保存する
np.savez('./mu_params', **d)  # dict のアンパックが必要

読み込み

以下のとおり、保存されたパラメータを numpy.load で辞書として読み込んだ後、リストに復元します。

# 読み込む
d = np.load('./mu_params' + '.npz')  # 拡張子 .npz の指定が必要

# 辞書からリストを復元する
mu = [d['mu_' + str(i)] for i in range(M)]