从 HDF5 中的组获取​​多个数据集

Getting multiple datasets from group in HDF5

我正在比较两个不同的 hdf5 文件以确保它们匹配。我想在 hdf5 文件中创建一个包含组中所有数据集的列表,这样我就可以循环 运行 遍历所有数据集,而不是手动输入它们。我似乎无法找到办法做到这一点。目前我正在使用以下代码获取数据集:

tdata21 = ft['/PACKET_0/0xeda9_data_0004']

集的名称位于 "PACKET_0" 组中。安排完所有数据集后,我将在此循环中比较数据集中的数据:

for i in range(len(data1)):
   print "%d\t%g\t%g" % (i, data1[i],tdata1[i])
   if(data1[i]!=tdata1[i]):
     x="data file: data1 \nline:"+ str(i) + "\norgianl data:"  + str(data1[i]) + "\nrecieved data:" + str(tdata1[i]) + "\n\n"
     correct.append(x)

如果有更聪明的方法来比较 hdf5 文件,我希望能看到它,但主要是我只是在寻找一种方法来将组中所有数据集的名称放入列表中。谢谢

要获取存在于 HDF5 组或文件中的数据集或组,只需对该组或文件调用 list()。使用您的示例,您将有

datasets = list(ft['/PACKET_0'])

您也可以直接迭代它们,方法是:

for name, data in ft['/PACKET_0'].items():
    # do stuff for each dataset

如果你想比较两个数据集的相等性(即它们具有相同的数据),最简单的方法是这样做:

(dataset1.value == dataset2.value).all()

来自每个数据集的 returns NumPy 数组逐个元素地比较这些数组,如果它们在所有地方都匹配,则 returns True 否则 False

您可以结合这两个概念来比较两个不同文件中的每个数据集。