我有一个HDF5文件,在文件系统上显示为23G。对于我目前正在处理的问题,这似乎太大了,所以我决定进行调查。
该文件包含70个数据集,每个数据集大约100,000个实例(数据类型为int8,使用gzip压缩)。我查看了文件中每个数据集的大小,如下所示:
f = h5py.File('my_file.hdf5', 'r')
names = []
f.visit(names.append)
size = 0
dataset_count = 0
for n in names:
if isinstance(f[n], h5py.Dataset):
size += f[n].size
dataset_count += 1
print("%i bytes in %i datasets out of %i items in hdf5 file."
% (size, dataset_count, len(names)))
输出以下内容:
hdf5文件中176个项目中的70个数据集中的7342650个字节。
我不打扰组/数据集属性,因为它们被限制在一定大小,并且无论如何文件中没有(检查它)。
将这些7,342,650字节与列出的文件大小23,622,594,194字节进行对比,我感到很茫然。这里发生了什么? HDF5的bug?文件系统错误?
如果我执行与上面代码相同的循环并将数据传输到新文件(没有gzip压缩),由于hdf5开销,我得到一个更大的文件,但不是那么大,在58,874,232字节。
Hdf5 libversion是1.8.7,h5py是2.5.0。