python-2.7 - 删除 h5py 数据集的项目,但文件大小加倍

标签 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

最佳答案

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

如果您确实需要“删除”数据集,请将除数据集以外的所有数据复制到新的 hdf5 文件中。我记得这是我能够找到的唯一解决方法来实现同样的目标。

注意:您可以使用 del f["x_data"] 而不是 f.__delitem__("x_data")

关于python-2.7 - 删除 h5py 数据集的项目,但文件大小加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39448961/

相关文章:

python - 为什么如果我将多个空的 Pandas 系列放入 hdf5 hdf5 的大小如此巨大?

django - 比较在 Django 中存储为字符串的日期

python - VirtualEnv/Pip 尝试全局安装包

python-2.7 - 在Elasticsearch中为pdf编制索引时出现mapper_parsing_exception错误

hdf5 - 如何使用 gdal_translate 或 gdalwarp 将 HDF5 转换为 geotiff?

python - h5py读取时间在读取速度上有随机且剧烈的波动

python - Gunicorn 在 Flask 应用程序上不断重启/中断

python - 如何在python中读取Mat v7.3文件?

python - 从之前保存的 hdf5 文件中加载部分模型权重

python - 写文件时指定h5py路径?