如何编辑hdf5文件的一部分

Posted

技术标签:

【中文标题】如何编辑hdf5文件的一部分【英文标题】:how to edit part of an hdf5 file 【发布时间】:2022-01-06 17:10:37 【问题描述】:

我正在尝试编辑现有 hdf5 文件中的降水率值,以便将 >= 10 的值重写为 1,将

import h5py
import numpy as np
import glob

filenames = []
filenames += glob.glob("/IMERG/Exceedance/2014_E/3B-HHR.MS.MRG.3IMERG.201401*")

for file in filenames:
    f = h5py.File(file,'r+')
    new_value = np.zeros((3600, 1800))
    new_value = new_value.astype(int)
    precip = f['Grid/precipitationCal'][0][:][:]

    for i in precip:
        for j in i:
            if j >= 10.0:
                new_value[...] = 1
            else:
                pass
    precip[...] = new_value
    f.close()

【问题讨论】:

【参考方案1】:

您似乎只是在更改数组的值,而实际上并未更新文件对象中的任何内容。另外,我会摆脱那个 for 循环 - 它很慢!试试这个:

import h5py
import numpy as np
import glob

filenames = []
filenames += glob.glob("/IMERG/Exceedance/2014_E/3B-HHR.MS.MRG.3IMERG.201401*")

for file in filenames:
    f = h5py.File(file,'r+')
    precip = f['Grid/precipitationCal'][0][:][:]

    # Replacing the for loop
    precip[precip>10.0] = 1

    # Assign values
    f['Grid/precipitationCal'][0][:][:] = precip
    f.close()

【讨论】:

【参考方案2】:

您似乎没有将新值写入文件,而只是将它们存储在数组中。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何编辑hdf5文件的一部分的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python 将 Hdf5 文件部分复制到保持相同结构的新文件中?

如何在现有 HDF5 文件上创建组? (HDF5)

如何从 HDF5 文件中读取属性?

如何检查文件是不是为有效的 HDF5 文件?

如何读取 hdf5 文件。并将它们绘制为图像

如何将 HDF5 文件转换为 Parquet 文件?