Python

Python初学者向け:ndarrayの保存と読み込みについて基本から解説

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

▶ Numpyの基本を解説しています。過去の記事はこちらからどうぞ。

はじめに

今回はndarrayの保存と読み込みについて基本から解説していきます。保存については何も難しいことはありませんが、保存したndarrayを読み込むときには注意が必要です。実際に例を示しながら丁寧に解説していきます。

ndarrayの保存

基本

np.save()でndarrayを保存することができます。書式を確認しておきましょう。

np.save(file.npy, arr)

fileの部分はファイルパスを指定することもできます。また、拡張子「.npy」はつけてもつけなくても大丈夫です。(つけなければ自動的に補完されます)サンプルデータを作って保存してみましょう。

# ライブラリのインポート
import numpy as np

# サンプルデータの作成
np.random.seed(1)
sample_ndarray = np.random.randint(0,10,size=(3,4))

# データの確認
print('サンプルデータの確認')
print(sample_ndarray)

# データの保存
np.save('sample_data.npy',sample_ndarray)
サンプルデータの確認

簡単ですね。このコードを実行したフォルダ内に「sample_data.npy」というファイルが作成されます。

辞書として保存

np.save()は辞書の場合でも同様に保存することができます。ndarrayを辞書として保存するケースも見ておきましょう。

# 辞書のサンプルデータ作成
sample_dict = {
    'id':'001',
    'data':sample_ndarray
}
sample_dict
辞書のサンプルデータ作成

この辞書を保存する場合も同様の操作で可能です。

# 辞書データの保存
np.save('sample_dict.npy',sample_dict)

このコードを実行したフォルダ内に「sample_dict.npy」というファイルが作成されます。

ndarrayの読み込み

基本

次に保存したファイルの読み込みを見ていきましょう。ファイルの読み込みにはnp.load()を使います。次の書式となります。

np.load(file)

先ほど保存したファイルを読み込んでみましょう。

# npyファイルの読み込み
loaded_sample_data = np.load('sample_data.npy')
loaded_sample_data
読み込んだデータの表示

問題なく読み込むことができました。

辞書の読み込み

次に先ほど保存した辞書データの読み込みをしてみましょう。

# 辞書データの読み込み
loaded_sample_dic = np.load('sample_dict.npy')
ValueError

今度はエラーになってしまいました。これは保存時にPythonのモジュールであるpickleを使用して配列情報を保存していることに起因しているようです。np.load()ではpickleに関するdefault値が「allow_pickle = False」となっているためエラーとなっているようです。ここを書き換えてみましょう。

# 辞書データの読み込み
loaded_sample_dic = np.load('sample_dict.npy',allow_pickle=True)

今度はエラーが出ませんね。ではこの読み込んだデータを確認してみましょう。

# 読み込んだ辞書データの確認
loaded_sample_dic
読み込んだ辞書データの確認

辞書を保存したはずですが、読み込んだデータはarrayになっていますね。これより辞書を取り出すにはitem()を使うか、あるいは[()]とします。

# item()を使う
loaded_sample_dic.item()
item()を使ってarrayから辞書部分を取り出す
# [()]を使う
loaded_sample_dic[()]
[()]を使ってarrayから辞書部分を取り出す

うまくいきましたね。

スポンサーリンク

まとめ

今回はndarrayの保存、および、読み込む方法を扱いました。ndarrayの保存はnp.save()を使います。np.save()は辞書型のデータも同様の方法で保存できます。一方、ファイルを読み込む際はnp.load()を使います。ndarrayが保存されたファイルは何も難しいことはなかったですね。辞書型データを読み込む場合には、保存時にpickleが使用されている場合はload時にallow_pickle=Trueを指定する必要があります。また、読み込んだデータはarrayになっているので、ここから辞書型を抽出するにはitem()や[()]を使います。

コメント

タイトルとURLをコピーしました