删除h5py数据集的项目,但文件大小为double

时间:2016-09-12 11:08:14

标签: python-2.7 hdf5 h5py

我想操作h5py数据集中的一个旧项目,然后删除旧项目并添加新项目。

我使用__delitem__()函数删除旧数据集项。它似乎成功从f5py文件的keys中删除了该项。但文件大小翻倍。任何人都可以提供实际删除h5py数据集项目的建议吗?非常感谢。

这是我的代码:

import numpy as np
import h5py

# suppose I have hdf5 file names stored in: h5_files

for name in h5_files:
    roll_images = []
    with h5py.File(name, "a") as f:
        x = f["x_data"]
        np_x = np.array(x)

        # do something to np_x, but keep dtype and shape the same as x.

        f.__delitem__("x_data")
        f.create_dataset("x_data", data = np_x)

原始h5py文件的大小为: 997.3MB 。但运行上述代码后,文件大小约为两倍: 2.0GB

1 个答案:

答案 0 :(得分:2)

我可能错了,但我认为数据集删除实际上只删除了数据集的名称,但数据仍然保留在文件中。这可以解释文件大小加倍。

如果你真的需要"删除"数据集,将除数据集之外的所有数据集复制到新的hdf5文件。我记得这是我能找到的唯一可以找到同样的事情。

注意:您可以使用f.__delitem__("x_data")代替del f["x_data"]