通过简单的校准更新hdf5数据

我正在尝试更新需要校准的hdf5文件数据。我添加的代码是:


with h5py.File(fileName,'r+') as hf:

    keys=hf.keys()

    data = hf[key][...]

    hf[key][...] = data*calibration_factor

仅用于简单的校准。但是,其结果在中全部为零hf[key][...]。当我将右侧的产品分配给变量时,我可以正确地得到结果。的dtype的data是int16。有什么可能的解决方案吗?感谢您的理解,我为此付出了很多努力。


我已将此问题发布为另一个问题的附件,但由于单独存在,因此在此处创建了一个新问题。请不要将其标记为重复。


忽然笑
浏览 249回答 2
2回答

慕斯709654

试着去np.asarray(data, dtype=float)。根据您的评论和@hpaulj注释,由于数据为,因此您的结果将被截断为0 int16。

回首忆惘然

在HDF5文件中,数据集的数据类型在创建数据集时是固定的。正如hpaulj提到的那样hf[key][...] = data*calibration_factor将右侧的值(正确提升为浮点值)在将它们存储在数据集中时会四舍五入为整数。如果要存储规范化的值,则必须创建一个具有适当数据类型的新数据集(在删除旧数据集后,使用相同的名称)。我提出以下建议:with h5py.File(fileName,'r+') as hf:    keys=hf.keys()    data = hf[key][...]    del hf[key]    hf[key] = data*calibration_factor应该将结果存储为浮点值。该代码未定义key,但我想您给出的示例相对于实际代码已简化。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python