2013-11-21 40 views
5

我试图压缩我的数组这样与pytables压缩阵列

import numpy as np 
import tables 
from contextlib import closing 

FILTERS = tables.Filters(complib='zlib', complevel=5) 

data = np.zeros(10**7) 

with closing(tables.open_file('compressed', mode='w', filters=FILTERS)) as hdf: 
    hdf.create_array('/', 'array', obj=data) 

with closing(tables.open_file('uncompressed', mode='w')) as hdf: 
    hdf.create_array('/', 'array', obj=data) 

但它不会在所有

-rw-rw-r-- 1 user user 80002360 2013-11-21 15:27 compressed 
-rw-rw-r-- 1 user user 80002304 2013-11-21 15:28 uncompressed 

工作,我在这里干什么什么了吗?

回答

7

阵列本身不能被压缩。压缩需要分块,因此您必须使用分块数组(CArray)或可扩展数组(EArray)。这可能是1个字符的变化,因为您只需调用create_carray()方法而不是create_array()方法。

import numpy as np 
import tables 
from contextlib import closing 

FILTERS = tables.Filters(complib='zlib', complevel=5) 

data = np.zeros(10**7) 

with closing(tables.open_file('compressed', mode='w', filters=FILTERS)) as hdf: 
    hdf.create_carray('/', 'array', obj=data) 

with closing(tables.open_file('uncompressed', mode='w')) as hdf: 
    hdf.create_array('/', 'array', obj=data) 
+0

谢谢你的回答。我没有在doc中关注这一刻。 – qweqwegod

+0

很高兴能帮到你! –