python - 按数据集名称排列的数据集的 h5py 顺序

标签 python hdf5 h5py

我正在创建一个包含 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
      }
   }
}

最佳答案

默认情况下,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' < 'a16')。

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

a0040
a0160
a1214

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

关于python - 按数据集名称排列的数据集的 h5py 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23415367/

相关文章:

python - 在 python 中绘制轴 - matplotlib

python - Conda:当前 win-64 channel 中缺少包

python - cv2.approxPolyDP() , cv2.arcLength() 这些是如何工作的

python-2.7 - 使用 h5py 沿新轴将数据添加到现有 h5py 文件

python - 我的列表使用了多少内存?

python - 如何在 python GUI 应用程序中创建线程?

python - 使用h5py读取HDF5时出错

matlab - 通过MATLAB向HDF5文件中Datatype的每个成员写入矩阵数据

python - 将 HDF5 用于大型阵列存储(而不是平面二进制文件)是否具有分析速度或内存使用优势?

python - 将 vlen 与 h5py 一起使用时出现莫名其妙的行为