如何加载具有错误数据类型标志的HDF5文件?

2024-10-02 22:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.h5 file,我可以用Matlab、IDL和python来阅读。但是,Matlab和python都加载这个文件,但是数据集得到一个数据类型H5T_STD_U16LE (uint16)。基本上,我的浮点值在读取过程中被转换成整数,使0.1这样的值变成0。在

使用IDL读取时,会忽略HDF5文件中的内部标志,并给出正确的值。在

在Matlab或python中有没有一种方法可以以双精度强制读取HDF5文件数据集?在

在Matlab中我可以:

hinfo = hdf5info('./data.h5');
dset = hdf5read(hinfo.GroupHierarchy.Groups(1).Groups(1).Datasets(1));

在python中:

^{pr2}$

Tags: 文件数据fileidlhdf5浮点groupsh5
1条回答
网友
1楼 · 发布于 2024-10-02 22:26:35

重新解释Numpy中的数据

首先确保您知道实际的数据类型。您编写了float,但必须知道确切的数据类型(float64、float32、float16)和顺序(Little,BigEndian)。在

将float64解释为uint16并返回

import numpy as np
#copy the dset using np.copy()
#The following should be quite straight forward
A=np.ones(2)
print(A)
#Interpret the data as np.uint16
B=np.frombuffer(A,dtype=np.uint16)
print(B)
#Make the reverse
C=np.frombuffer(B,dtype=np.float64)
print(C)

[1. 1.]
[    0     0     0 16368     0     0     0 16368]
[1. 1.]

相关问题 更多 >