如何解决在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 举报,一经查实,本站将立刻删除。