Python h5py:如何重命名尺寸?

Python h5py:如何重命名尺寸?,python,dimensions,h5py,Python,Dimensions,H5py,我创建了一个句柄为fw的新文件 fw.create_dataset('grp1/varname',data=arr) 这些组是在此命令之前创建的。arr是一个维数为(2,3)的numpy数组。文件已成功创建。但是,尺寸标注分别命名为“假_0”和“假_1”。我怎么把它们改成m和n 一般来说,如何在组内创建维度,然后将变量与之关联 我试过了 fw['grp1/varname'].dims[0].label = 'm' 但这并没有达到预期的效果 创建的文件上的ncdump-h显示: group:

我创建了一个句柄为fw的新文件

fw.create_dataset('grp1/varname',data=arr)
这些组是在此命令之前创建的。arr是一个维数为(2,3)的numpy数组。文件已成功创建。但是,尺寸标注分别命名为“假_0”和“假_1”。我怎么把它们改成m和n

一般来说,如何在组内创建维度,然后将变量与之关联

我试过了

fw['grp1/varname'].dims[0].label = 'm'
但这并没有达到预期的效果

创建的文件上的
ncdump-h
显示:

group: grp1 {

        dimensions:
                phony_dim_0 = 2 ;
                phony_dim_1 = 3 ;

        variables:

                float varname(phony_dim_0, phony_dim_1) ;
                        string varname:DIMENSION_LABELS = "m", NIL, NIL ;
        } // group grp1
谢谢

打印([fw['grp1/varname'].dims中dim的dim.label]) 不会产生一致的输出。 [u'm',u']

hdffile似乎没有将维度与组关联的规定。然而,varname是一个变量。如何获得:

   variables:
            float varname(m, phony_dim_1) ;
                    string varname:DIMENSION_LABELS = "m", NIL ;
    } // group grp1
在ncdump-h或h5dump的输出中?我确实尝试了不同的h5dump选项


谢谢。

您的输出表明
varname
数据集的第一个维度标签是“m”。那些虚假的尺寸标签只保留每个尺寸的实际尺寸,而不是标签


打印的输出是什么([dim.label for dim in fw['grp1/varname'].dims])

部分问题可能是您使用了
ncdump

我可以制作一个简单的文件,并为数据集设置
dims
标签:

In [420]: import h5py
In [421]: f = h5py.File('testdim.h5','w')
In [422]: ds = f.create_dataset('grp1/varname', data = np.arange(10))
In [423]: ds
Out[423]: <HDF5 dataset "varname": shape (10,), type "<i8">
该组没有
dims

In [442]: g = f['grp1']
In [443]: g
Out[443]: <HDF5 group "/grp1" (1 members)>
In [444]: g.dims
AttributeError: 'Group' object has no attribute 'dims'

In [446]: f.flush()
使用设计用于显示
netcdf
文件的
ncdump

1902:~/mypy$ ncdump -h testdim.h5 
netcdf testdim {

group: grp1 {
  dimensions:
    phony_dim_0 = 10 ;
  variables:
    int64 varname(phony_dim_0) ;
        string varname:DIMENSION_LABELS = "m" ;
  } // group grp1
}
尽我所能,
h5df
格式没有组维度
ncdump
为其创建一个虚拟属性

为了重申对上一个问题的回答,HDF5维度的文档如下:

对于HDF5文件

如果未使用尺寸比例,则netCDF-4仍可以编辑该文件,并将为每个变量形状创建匿名尺寸

NETCDF具有共享维度,HDF5具有维度比例。他们不太一样

在HDF5数据模型中,没有共享维度的概念(与netCDF不同)。HDF5数据集的形状指定为维度长度列表。但是,netCDF-4库使用HDF5作为其存储后端。它使用HDF5标注比例表示共享标注

昨天的问题:
1902:~/mypy$ h5dump testdim.h5 
HDF5 "testdim.h5" {
GROUP "/" {
   GROUP "grp1" {
      DATASET "varname" {
         DATATYPE  H5T_STD_I64LE
         DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
         DATA {
         (0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
         }
         ATTRIBUTE "DIMENSION_LABELS" {
            DATATYPE  H5T_STRING {
               STRSIZE H5T_VARIABLE;
               STRPAD H5T_STR_NULLTERM;
               CSET H5T_CSET_ASCII;
               CTYPE H5T_C_S1;
            }
            DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }
            DATA {
            (0): "m"
            }
         }
      }
   }
}
}
1902:~/mypy$ ncdump -h testdim.h5 
netcdf testdim {

group: grp1 {
  dimensions:
    phony_dim_0 = 10 ;
  variables:
    int64 varname(phony_dim_0) ;
        string varname:DIMENSION_LABELS = "m" ;
  } // group grp1
}