我想操作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
答案 0 :(得分:2)
我可能错了,但我认为数据集删除实际上只删除了数据集的名称,但数据仍然保留在文件中。这可以解释文件大小加倍。
如果你真的需要"删除"数据集,将除数据集之外的所有数据集复制到新的hdf5文件。我记得这是我能找到的唯一可以找到同样的事情。
注意:您可以使用f.__delitem__("x_data")
代替del f["x_data"]
。