【问题标题】:h5py order of dataset by dataset name按数据集名称的数据集的 h5py 顺序
【发布时间】:2014-06-18 09:13:00
【问题描述】:

我正在创建一个包含 5 个数据集 ['a160'],['a1214'] 的 h5 文件

我怎样才能使数据集按数据集名称排序..

例如,当我对文件执行 h5dump 时,我得到:

HDF5 "jjjj.h5" {
GROUP "/" {
   DATASET "a1214" {
      DATATYPE  H5T_IEEE_F32BE
      DATASPACE  SIMPLE { ( 1, 19 ) / ( H5S_UNLIMITED, 19 ) }
      DATA {
      (0,0): 160, 0, 165, 4, 2.29761, 264, 4, 1.74368, 1, 0, 17, 193, 0, 0,
      (0,14): 0, 0, 0, 0, 0
      }
   }
   DATASET "a160" {
      DATATYPE  H5T_IEEE_F32BE
      DATASPACE  SIMPLE { ( 3, 19 ) / ( H5S_UNLIMITED, 19 ) }
      DATA {
      (0,0): 263, 0, 262, 7, 4.90241, 201, 34, 0.348432, 1, 0, 29, 11, 0, 0,
      (0,14): 0, 0, 0, 0, 0,
      }
   }

但我希望它按数据集名称排序,我需要 h5dump 来输出

HDF5 "jjjj.h5" {
GROUP "/" {
   DATASET "a160" {
      DATATYPE  H5T_IEEE_F32BE
      DATASPACE  SIMPLE { ( 3, 19 ) / ( H5S_UNLIMITED, 19 ) }
      DATA {
      (0,0): 263, 0, 262, 7, 4.90241, 201, 34, 0.348432, 1, 0, 29, 11, 0, 0,
      (0,14): 0, 0, 0, 0, 0,
      }
   }

   DATASET "a1214" {
      DATATYPE  H5T_IEEE_F32BE
      DATASPACE  SIMPLE { ( 1, 19 ) / ( H5S_UNLIMITED, 19 ) }
      DATA {
      (0,0): 160, 0, 165, 4, 2.29761, 264, 4, 1.74368, 1, 0, 17, 193, 0, 0,
      (0,14): 0, 0, 0, 0, 0
      }
   }
}

【问题讨论】:

    标签: python hdf5 h5py


    【解决方案1】:

    默认情况下h5dump 按名称升序对 HDF5 文件的组和属性进行排序:

    -q Q, --sort_by=Q    Sort groups and attributes by index Q
    -z Z, --sort_order=Z Sort groups and attributes by order Z
    
    Q - is the sort index type. It can be "creation_order" or "name" (default)
    Z - is the sort order type. It can be "descending" or "ascending" (default)
    

    这种情况下的问题是“a160”被认为大于“a1214”,因为这就是字典排序的工作原理('a12'

    您无法对 HDF5 文件的内部结构进行任何更改,以强制 h5dump 以不同的顺序对这些数据结构进行排序。但是,您可以像这样对您的姓名进行零填充:

    a0040
    a0160
    a1214
    

    然后标准字典排序会按照你想要的方式输出文件。

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 2013-04-19
      • 2017-06-12
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2022-08-19
      • 2019-10-05
      相关资源
      最近更新 更多