【发布时间】:2020-04-18 03:58:09
【问题描述】:
我有一个关于 .h5 文件的问题,我真的不知道它包含什么。实际上,我想使用 Python 检查文件中的内容,但每次我用 pandas 打开它时:
df = pd.read_hdf('file.h5')
它返回一个错误:
ValueError: No dataset in HDF5 file.
知道如何成功打开和检查它吗? 谢谢。
【问题讨论】:
我有一个关于 .h5 文件的问题,我真的不知道它包含什么。实际上,我想使用 Python 检查文件中的内容,但每次我用 pandas 打开它时:
df = pd.read_hdf('file.h5')
它返回一个错误:
ValueError: No dataset in HDF5 file.
知道如何成功打开和检查它吗? 谢谢。
【问题讨论】:
Pandas 更像是一个用于 CSV 或其他分隔符分隔值的库。
所以,请使用h5py。
>>> import h5py
>>> f = h5py.File('mytestfile.h5', 'r')
File 对象是你的起点 .h5py.File 就像一个 Python 字典,因此我们可以检查键,
>>> list(f.keys())
['mydataset']
根据我们的观察,文件中有一个数据集,mydataset。让我们将数据集作为 Dataset 对象进行检查
>>> dset = f['mydataset']
我们得到的对象不是一个数组,而是一个 HDF5 数据集。与 NumPy 数组一样,数据集也有形状和数据类型:
>>> dset.shape
(100,)
>>> dset.dtype
dtype('int32')
它们还支持数组样式的切片。这是您从文件中的数据集读取和写入数据的方式:
>>> dset[...] = np.arange(100)
>>> dset[0]
0
>>> dset[10]
10
>>> dset[0:100:10]
array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
【讨论】:
list(f.keys()) 时,我得到了这个错误:TypeError: h5py objects cannot be pickled。谁能帮帮我?