作为测量的输出文件,我得到大的ASCII文件,包含一个1000x1000的浮点数表(~15MB)。由于那些大量不切实际(即每个系列另外1000次测量),我想有效地压缩它们。利用数据结构(基本上是1 MP地图 - >图片)我试图使用pylabs imsave函数从原始数据生成PNG文件,这很好地工作并产生200kB(!!!!!)* .png。
为了稍后分析数据,我显然需要对PNG进行反向处理,并希望得到相同的初始表。然而,所谓的功能,imread,产生一个4元组,我无法弄清楚。有没有人有这样一个过程的经验,或者更好地了解如何解决压缩问题(简单地压缩甚至远程压缩不够)。
import numpy
import Image
import matplotlib
import pylab
data=numpy.genfromtxt('raw data.txt',autostrip=True, case_sensitive=True)
pylab.imsave('convert.png',data)
out=pylab.imread('convert.png')
numpy.savetxt('converted.txt', out[0], fmt='%1.4e')
答案 0 :(得分:3)
png如此之小的事实是它使用了zlib库。我认为你宁愿使用那个库而不是png包装器,它也不会那么令人困惑。
请参阅http://zlib.net。
如果您仍想使用png库,那么您有4元组的事实是因为png图像通常具有Alpha通道,因此格式为RGBA,您必须使用全部4来重建数据。
答案 1 :(得分:0)