微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中使用H5T_ARRAY

如何解决在Python中使用H5T_ARRAY

我正在尝试使用Python在H5T_COMPOUND结构内使用H5T_ARRAY。基本上,我正在编写hdf5文件,如果使用H5Dump打开它,结构将如下所示。

HDF5 "SO_64449277np.h5" {
GROUP "/" {
   DATASET "Table3" {
      DATATYPE  H5T_COMPOUND {
         H5T_COMPOUND {
            H5T_STD_I16LE "id";
            H5T_STD_I16LE "timestamp";
         } "header";
         H5T_COMPOUND {
            H5T_IEEE_F32LE "latency";
            H5T_STD_I16LE "segments_k";
            H5T_COMPOUND {
               H5T_STD_I16LE "segment_id";
               H5T_IEEE_F32LE "segment_quality";
               H5T_IEEE_F32LE "segment_length";
            } "segments_k0";
            H5T_COMPOUND {
               H5T_STD_I16LE "segment_id";
               H5T_IEEE_F32LE "segment_quality";
               H5T_IEEE_F32LE "segment_length";
            } "segments_k1";
    .....
           } "summary_data";
      }
      DATASPACE  SIMPLE { ( 2 ) / ( H5S_UNLIMITED ) }
   }
}
}

相反,想法是要拥有这样的东西:

HDF5 "SO_64449277np.h5" {
GROUP "/" {
   DATASET "Table3" {
      DATATYPE  H5T_COMPOUND {
         H5T_COMPOUND {
            H5T_STD_I16LE "id";
            H5T_STD_I16LE "timestamp";
         } "header";
         H5T_COMPOUND {
            H5T_IEEE_F32LE "latency";
            H5T_ARRAY {[70] H5T_COMPOUND {
               H5T_STD_I16LE "segment_id";
               H5T_IEEE_F32LE "segment_quality";
               H5T_IEEE_F32LE "segment_length";
            } } "segments_k";
         } "summary_data";
      }
      DATASPACE  SIMPLE { ( 2 ) / ( H5S_UNLIMITED ) }
   }
}
}

谢谢!

解决方法

不确定如何使用其他库来完成此操作,但是上面的数据集复合布局可能是使用Python中的HDFql如下创建的:

# import HDFql package
import HDFql

# create an HDF5 file named 'SO_64449277np.h5'
HDFql.execute("CREATE FILE SO_64449277np.h5")

# create an HDF5 compound dataset named 'Table3' (in HDF5 file 'SO_64449277np.h5') with the wanted layout
HDFql.execute("CREATE DATASET SO_64449277np.h5 Table3 AS COMPOUND(header AS COMPOUND(id AS SMALLINT,timestamp AS SMALLINT),summary_data AS COMPOUND(latency AS FLOAT,segments_k AS COMPOUND(segment_id AS SMALLINT,segment_quality AS FLOAT,segment_length AS FLOAT)(70)))(2 TO UNLIMITED)")

检查HDFql reference manual,了解更多信息和示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。