numpy.array() データを適切に保存およびロードするにはどうすればよいでしょうか? 質問する

numpy.array() データを適切に保存およびロードするにはどうすればよいでしょうか? 質問する

numpy.arrayどうすればデータを適切に保存およびロードできるのか疑問に思います。現在はnumpy.savetxt()メソッドを使用しています。たとえば、markers次のような配列を取得した場合:

ここに画像の説明を入力してください

私は以下を使用してそれを保存しようとします:

numpy.savetxt('markers.txt', markers)

他のスクリプトでは、以前に保存したファイルを開こうとします:

markers = np.fromfile("markers.txt")

そして、それが私が得たものなのです...

ここに画像の説明を入力してください

保存されたデータは、最初は次のようになります。

0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00

しかし、同じ方法を使用してロードしたデータを保存すると、numpy.savetxt()次のようになります。

1.398043286095131769e-76
1.398043286095288860e-76
1.396426376485745879e-76
1.398043286055061908e-76
1.398043286095288860e-76
1.182950697433698368e-76
1.398043275797188953e-76
1.398043286095288860e-76
1.210894289234927752e-99
1.398040649781712473e-76

何が間違っているのでしょうか? PS: 私が実行している他の「バックステージ」操作はありません。保存と読み込みだけ、そしてそれが私が得るものです。よろしくお願いします。

ベストアンサー1

私が見つけた最も信頼性の高い方法は、 ではなくnp.savetxtを使用することです。これは、 で書き込まれたバイナリ ファイルに適しています。およびメソッドはバイナリ ファイルの書き込みと読み取りを行いますが、はテキスト ファイルに書き込みます。たとえば、次のようになります。np.loadtxtnp.fromfiletofilenp.fromfilenp.tofilenp.savetxt

a = np.array([1, 2, 3, 4])
np.savetxt('test1.txt', a, fmt='%d')
b = np.loadtxt('test1.txt', dtype=int)
a == b
# array([ True,  True,  True,  True], dtype=bool)

または:

a.tofile('test2.dat')
c = np.fromfile('test2.dat', dtype=int)
c == a
# array([ True,  True,  True,  True], dtype=bool)

前者の方法は遅く、作成されるファイルも大きくなりますが (場合によっては)、私は前者の方法を使用します。バイナリ形式はプラットフォームに依存する場合があります (たとえば、ファイル形式はシステムのエンディアンによって異なります)。

そこにはプラットフォームに依存しないNumPy配列の形式で、 および を使用して保存および読み取ることができますnp.savenp.load

np.save('test3.npy', a)    # .npy extension is added if not given
d = np.load('test3.npy')
a == d
# array([ True,  True,  True,  True], dtype=bool)

おすすめ記事