LoginSignup
poko_amu
@poko_amu (poko amu)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

npy,npz容量が同じなのは何故ですか?

解決したいこと

単純な疑問ですが、解決できずモヤっとしています

一つのnpyファイル:1.3GB

上記のnpyファイルが72コ格納されているnpzファイル:1.3GB

上の二つの容量が同じな理由がわかりません。

圧縮しているわけでも無いのですし。
わかる方いれば、教えていただけると幸いです

0

1Answer

npz は圧縮可能な形式のようですが、そのファイルが非圧縮であることは検証されているのでしょうか?

追記

検証1

圧縮率の高そうな、0が並んだリストで検証してみました。

code
import numpy as np
a = np.array([0] * 100000)
aa = np.array([a] * 72)
np.savez('np_savez_a', a)
np.savez('np_savez_aa', *aa)
np.savez_compressed('np_savez_compressed_a', a)
np.savez_compressed('np_savez_compressed_aa', *aa)
result
    400,264 np_savez_a.npz
 28,817,570 np_savez_aa.npz
        622 np_savez_compressed_a.npz
     43,346 np_savez_compressed_aa.npz

以上のことから、たとえ圧縮され、GB単位に丸められたとしても、1個と72個では、有意な差が付くだろうことが解りました。

0

Comments

  1. @poko_amu

    Questioner
    非圧縮の認識です!
    np.savez→非圧縮
    np.savez_compressed→圧縮
    の認識でいて、前者を使用してセーブを行っています
  2. はい。その通りですね。
    従って、ファイルを見ただけでは、圧縮か非圧縮か解らないわけです。

    そのコードで生成したと思っていても、別の場所のファイルを取り違えていたり、あるいは、`np.savez`で`np.savez_compressed`が呼ばれるようにラップされていたりするかも知れません。
    ダンプしてみるなどして、そのファイルが非圧縮である証拠を得るまでは、圧縮されている可能性がゼロではないように思えます。

    ファイルサイズが間違いないなら、逆に、「圧縮されているに違いない。なぜ、`np.savez`で圧縮されたのか」と疑うことも可能ではないでしょうか。

    可能なら、実際のコードとファイルを拝見したいです。
  3. 「検証1」を追記しました。

    この検証結果から考えると(、直前のコメントに反して)、圧縮されGB単位に丸められていたとしても、1個と72個が同じサイズになることは、確かに奇妙で説明ができないように思われます。

    私には、これ以上のことは、コードやファイルを拝見しないと検証が難しそうです。
    可能なら、実行環境やファイルサイズの確認方法などについても明かしていただけると助かります。

Your answer might help someone💌