为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2021-04-08 18:19:49
我正在尝试更新需要校准的hdf5文件数据。我添加的代码是:with h5py.File(fileName,'r+') as hf:    keys=hf.keys()    data = hf[key][...]    hf[key][...] = data*calibration_factor仅用于简单的校准。但是,其结果在中全部为零hf[key][...]。当我将右侧的产品分配给变量时,我可以正确地得到结果。的dtype的data是int16。有什么可能的解决方案吗?感谢您的理解,我为此付出了很多努力。我已将此问题发布为另一个问题的附件,但由于单独存在,因此在此处创建了一个新问题。请不要将其标记为重复。
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

试着去np.asarray(data, dtype=float)

根据您的评论和@hpaulj注释,由于数据为,因此您的结果将被截断为0 int16


查看完整回答
反对 回复 2021-04-27
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

在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,但我想您给出的示例相对于实际代码已简化。


查看完整回答
反对 回复 2021-04-27
  • 2 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号