(67000、9、128、128)ndarrayの値.npy
を含む大きな(9.3 GB)ファイルがありuint8
ます。を使用して作成し、を使用np.save()
してロードするとx = np.memmap('file.npy', "uint8", shape=(67000, 9, 128, 128), mode="r")
、np.sum(x[0,0,:,0])
13783が返されます。「問題」は、を使用してロードしてnp.load("file.npy")
同じ関数を実行しようとすると、合計が13768になることです。
np.load()
ファイル全体をメモリにロードするので、そのndarrayで計算された合計は正しいと思いますが、memmapでロードされたndarrayによって返される合計は間違っていますが、なぜそれらが異なるのですか?読み取りエラーの場合、合計は実際にずれているはずですが、なぜ15だけずれているのですか??!
なぜそうなのか私にはわかりません。これは、言うまでもなく私の計算には影響しませんが、他のタスクにとっては重要である可能性があります。
numpy.memmap
ファイル内の生データをnumpy配列として扱うためのものです。ファイル名は'file.npy'
ですので、「生の」データではありません。これはNPYファイルであり、格納されている配列に関するメタ情報を含むヘッダーがあります。
NPYファイルをメモリマップするには、のmmap_mode
引数を使用しますnumpy.load()
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加