HDF5数据格式

129b66df2722daf6d2dc7b5bc0f1bfc5.png

HDF5是Hierarchical Data Format(HDF)第5代的简称,起源于高性能计算领域,目前标准由非营利组织The HDF Group[1]组织开发和维护。其优点在于

•(1)原始表示:数据不必转换成文本,不涉及到转换误差;•(2)自我描述:数据类型直接写在文件中,可以被自动识别;•(3)跨语言:支持所有主流语言,有多重查看器

但是其缺点在于并非人类直接可阅读的数据格式,且对ASCII之外的字符支持没有标准,不保证可以准确处理中文。

HDF5由数据集(Dataset)、组(Group)以及元数据(Metadata)组成。数据集用于储存多维数组;组是数据集的容器,并且可以嵌套;元数据则用于描述数据集或者组的特征,例如数据名称,数据类型等。

hdf5r

在R语言中使用hdf5r包来读写HDF5数据,这里我们简单介绍一下hdf5r的基本操作。想更深入了解HDF5数据格式的读者可以直接到The HDF Group官网阅读相关文档。想了解更多hdf5r包的读者可以自学其官方教程[2]

注意,使用Mac操作系统的读者在安装hdf5r包的依赖bit64包时,可能会遇到报错error: unknown type name 'uint64_t',此时需要将/usr/local/include文件夹修改为其他名字,修改名字后再次安装即可。)

在下面的代码中,我们通过H5File$new命令可以创建一个新的h5文件,通过create_group函数可以创建新的组,然后我们将数据mtcars放入分组,最后再通过close_all()关闭文件。

library(hdf5r)library(datasets)file.h5 mtcars.grp mtcars.grp[["mtcars"]] file.h5$close_all()

此时在工作路径中便生成了一个h5文件“hz.h5”,我们可以在命令行中通过python3-tables的vitables命令与hdf5-tools的h5dump命令查看HDF5文件内容。

通过H5File$new亦可以读入h5文件,然后通过names函数查看文件内的分组与数据集,并可以通过[[]]取出取出数据

file.h5 names(file.h5)cars file.h5$close_all()

References

[1] The HDF Group: https://www.hdfgroup.org/solutions/hdf5/[2] 官方教程: https://cran.r-project.org/web/packages/hdf5r/vignettes/hdf5r.html

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐