我正在考虑使用亚马逊云来满足我所有的模拟需求。 由此产生的SIM文件是相当大的,我想将它们移到我的本地驱动器,以便于分析,等等。 你必须支付每个数据移动,所以我想压缩所有我的模拟soutions尽可能小。 它们只是以.mat文件的forms保存的numpy数组,使用:
import scipy.io as sio sio.savemat(filepath,do_compression = True)
所以我的问题是,什么是最好的方式来压缩numpy数组(它们目前存储在.mat文件,但我可以存储它们使用任何python方法),通过使用python压缩保存,linux压缩,或两者?
我在linux环境下,并且对任何types的文件压缩都是开放的。
除非你对数组有一些特别的了解(例如稀疏或某种模式),否则你不会比默认的压缩做得更好,也可能是gzip。 事实上,如果您使用http进行下载,并且您的服务器配置为进行压缩,则甚至不需要对文件进行Gzip压缩。 良好的无损压缩算法很少变化超过10%。
如果savemat按照广告的方式工作,你应该可以用python获得Gzip压缩:
import scipy.io as sio import gzip f_out = gzip.open(filepath_dot_gz,'wb') sio.savemat(f_out,do_compression = True)
另外LZMA(AKA xz )在相当稀疏的numpy数组上提供了很好的压缩,尽管在压缩时它非常慢(并且可能需要更多的内存)。
在Ubuntu中,安装了sudo apt-get install python-lzma
它被用作任何其他的文件对象包装器,类似的东西(加载腌制的数据):
from lzma import LZMAfile import cPickle as pickle if filename.endswith('.xz'): datafile = LZMAfile(filename,'r') else: datafile = file(filename,'ro') data = pickle.load(datafile)
总结以上是内存溢出为你收集整理的数据压缩在Python / numpy全部内容,希望文章能够帮你解决数据压缩在Python / numpy所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)