h5py порядок набора данных по имени набора данных

Я создаю файлы h5 с 5 наборами данных ['a160'], ['a1214']

Как я могу сделать так, чтобы наборы данных сортировались по имени набора данных..

Например, когда я делаю 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
      }
   }
}

person Oren    schedule 01.05.2014    source источник


Ответы (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' ‹ 'a16').

Вы не можете внести изменения во внутреннюю структуру файла HDF5, чтобы заставить h5dump сортировать эти структуры данных в другом порядке. Однако вы можете дополнить свои имена нулями следующим образом:

a0040
a0160
a1214

и тогда стандартная сортировка по словарю выведет файл так, как вы хотите.

person dg99    schedule 01.05.2014