Rya*_*ope 7 python numpy scipy
我需要将一个巨大的numpy向量存储到磁盘.现在我试图存储的矢量大约是24亿个元素,数据是float64.当序列化到磁盘时,这需要大约18GB的空间.
如果我使用struct.pack()和使用float32(4字节)我可以将它减少到~9GB.我不需要接近这个数量的精确磁盘空间将很快成为一个问题,因为我期望我需要存储的值的数量可以增长一个数量级或两个.
我想如果我能访问前4个有效数字,我可以将这些值存储在一个int中,并且只使用1或2个字节的空间.但是,我不知道如何有效地做到这一点.有没有人有任何想法或建议?
如果您的数据介于0和1之间,并且16位就足够了,您可以将数据保存为uint16:
data16 = (65535 * data).round().astype(uint16)
Run Code Online (Sandbox Code Playgroud)
并使用扩展数据
data = data16 / 65535.0
Run Code Online (Sandbox Code Playgroud)