我正在尝试更新需要校准的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
。

回首忆惘然
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,但我想您给出的示例相对于实际代码已简化。
添加回答
举报
0/150
提交
取消