HDF5 (.h5, .hdf5)
背景
-
- MIME 类型: application/x-hdf5
- HDF 数据格式版本 5.
- 表示多维数据集和图像的通用格式.
- 支持有复合数据机构的数据集.
- 用于存储、管理和交换科学数据.
- HDF 是 Hierarchical Data Format(分层数据格式)的缩写.
- 由美国国家超级计算应用中心(NCSA)开发.
- 目前由 HDF 团队维护.
- 二进制文件格式.
- 不与 HDF 版本 4 及早期版本兼容.
Import 与 Export
- Import["file.h5"] 导入一个 HDF5 文件,返回存储在文件中的数据集名称.
- Import["file.h5",elem] 从一个 HDF5 文件中导入指定的参数.
- 导入格式可以由 Import["file","HDF5"] 或 Import["file",{"HDF5",elem,…}] 指定.
- Export["file.h5",expr] 将一个数值数组导出到 HDF5.
- Export["file.h5",{expr1,…},{"Datasets", {"dataset1",…}}] 创建一个 HDF5 文件,将数组{expr1,…} 存储为单独的数据集.
- Export["file.h5",expr,elem] 将指定参数导出至 HDF5 文件.
- Export["file.h5",elem1->expr1,…,"Rules"] 使用规则指定要导出的参数.
- 请到以下参考页面了解完整的基本信息:
-
Import, Export 从文件导入或导出到文件 CloudImport, CloudExport 从云对象导入或导出到云对象 ImportString, ExportString 从字符串导入或导出到字符串 ImportByteArray, ExportByteArray 从字节数组导入或导出到字节数组
Import 参数
- 通用 Import 参数:
-
"Elements" 该文件可用的参数和选项列表 "Summary" 文件摘要 "Rules" 所有可用参数的规则列表 - 结构参数:
-
"Datasets" 所有数据集的名称 "Groups" 所有分组的名称 "StructureGraph" 直接显示数据集结构的图 {"StructureGraph, groupname} 显示 groupname 以下结构的图 "StructureGraphLegend" 结构图的标签 "Summary" 属性摘要 - 分组和数据集的名称作为以 "/" 开始的根组名称的绝对路径给出.
- 默认情况下,对于 HDF5 格式,Import 使用 "Datasets" 参数.
- 表示数据的参数:
-
"Data" 以数组列表形式导入的所有数据集 {"Data",n} 或 n 第 n 个数据集 {"Data",dataset} 或 dataset 已命名的数据集 {"Data",groupname} groupname 以下所有数据集的关联 {"Data",groupname,lev} groupname 以下 lev 等级为止所有数据集的关联 - 支持以下基本数据类型:
-
"Integer8" 8 位整数 "Integer16" 16 位整数 "Integer32" 32 位整数 "Integer64" 64 位整数 "UnsignedInteger8" 8 位无符号整数 "UnsignedInteger16" 16 位无符号整数 "UnsignedInteger32" 32 位无符号整数 "UnsignedInteger64" 64 位无符号整数 "Real32" IEEE 单精度数 "Real64" IEEE 双精度数 "String" ASCII 字符的字符串 - 支持以下结构的数据类型:
-
"ByteArray" 任意长度的 ByteArray "Array" 任何所支持数据格式的数组 "Enum" 枚举类型 "Compound" 任何其他数据格式和其他复合数据集组成的复合数据集 - 复数通常作为复合类型储存和导入.
- 元数据参数:
-
"Attributes" 所有分组和数据集的属性 "DataEncoding" 指定每个数据集如何被压缩 "DataFormat" 用于表示每个数据集的类型 "Dimensions" 每个数据集的数据维度 {"metadata",n} 第 n 个数据集的元数据 {"metadata",dataset} metadata of the named dataset - 支持以下数据编码:
-
None 无数据压缩使用 "Fletcher32" 添加 Fletcher 校验和 "GZIP" GZIP 压缩 "ScaleOffset" 执行度量和/或补偿操作 "Shuffle" 重排序使连续位数的位置放置在一起 "SZIP" SZIP 压缩(只用于 Import) - 单独数据集可以有多种编码,其被指定为列表 {enc1,enc2,…}.
Export 参数
- 通用 Export 参数:
-
"Rules" 以 elemexpr 形式的导入元素列表 - Export["file.h5",{elem1->expr1,…},"Rules"] 使用规则指定要导出的参数.
- 可用的 Export 参数:
-
"Attributes" 与任何对象关联的属性 "Datasets" 数据集以及其相关联参数 "Groups" 分组名称和其相关联的参数 "NamedDataTypes" 已命名的数据类型和其相关联的参数 - 用 "Attributes" 参数,可给出以下表达式:
-
attr 与根组 "/" 相关联的属性 {path1attr1,…} 与指定 pathi 相关联的属性 attri - 属性 attri 应以 "attname"->attval 格式给出.
- 用 "Groups" 参数,可给出以下表达式:
-
{"gr1","gr2",…} 一个分组路径列表 {"gr1"grdata1,…} 一个分组列表和其相关联数据 - 分组数据 grdatai 可使用以下键:
-
"Attributes" 分组属性 "HardLinks" 与其他对象的硬链接 "SoftLinks" 与其他对象的软链接 - 软硬链接可用 "linkname"path 指定.
- 用 "Datasets" 参数,可给出以下表达式:
-
data 将 data 存储于 "Dataset1" 下 {"name1"data1,…} 一个数据集名称列表及其相关联数据 {"name1"ds1,…} 用一个规则列表指定每个数据集 dsi - 数据集 dsi 可使用以下键:
-
"Attributes" 数据集属性 "Data" 数据数组 "DataFormat" 数据类型 "MaxDimensions" 数据集的最大尺寸列表 "SpaceSelection" 数据空间中将要写入数据的部分 - 用 "NamedDataTypes" 参数,可给出以下表达式:
-
{"name1"type1,…} 一个数据类型 {"name1"<"Type"type1,"Attributes"att1 >,…} 一个关联指定一种类型和其属性 - 类型规范 typei 可使用以下格式:
-
"simpletype" 一个简单数据类型,例如 "Integer64" <"Class""ByteArray",… > 使用 "Length" 和 "Tag" 键 <"Class""Array",… > 使用 "DataFormat" 和 "Dimensions" 键 <"Class""Compound",… > 使用一个 "Structure" 键
选项
- Import 与 Export 选项:
-
"ComplexKeys" Automatic 用于复杂解释和导出的键 - 在默认情况下,{"Re","Im"} 使用复杂键. 其他设定包括:
-
None 无复杂解释(仅导入) Automatic 使用自动键 {key1,key2} 使用显式键 - Import 选项:
-
"TakeElements" All 需导入的参数子集 - "TakeElements" 可以处理一下值:
-
{elem1,elem2,…} 参数 elemi 列表 {m;;n;;s,...} 在步长 s 下,从 m 到 n 的参数 {opt1val1,…} 子选项列表 - 在选取参数时可用以下子选项 opti:
-
"Offset" {0,0,…} 沿数据集维数的补偿 "Count" All 沿每个维数导入的块数 "Stride" {1,1,…} 每个起始块间的步长 "Block" {1,1,…} 每个块的参数数目 - Export 选项:
-
ByteOrdering $ByteOrdering 使用何种字节顺序 OverwriteTarget True 是否覆盖已有文件 "AppendMode" "Extend" 如何附加于已有对象 - 用 OverwriteTarget->"Append",新对象有可能被添加于已有文件.
- 用于 "AppendMode" 的可能设定包括:
-
"Extend" 扩展已有对象,如果可能(默认) "Overwrite" 覆盖已有对象 "Preserve" 保留已有对象
范例
打开所有单元关闭所有单元范围 (12)
Import (7)
在默认情况下,a list of dataset names is returned:
导入 8 位 RGB 光栅数据并将它渲染为一个 Image 对象:
导入参数 (22)
Data (4)
DataFormat (2)
导出参数 (28)
Attributes (4)
Datasets (13)
导入选项 (4)
导出选项 (8)
"AppendMode" (1)
使用 OverwriteTarget"Append",将数据附加到现有文件时,可以使用 "AppendMode" 选项指定附加数据的导出行为。默认情况下,使用"AppendMode""Extend".
将一些属性附加到 "gr1/ds1" ,以及从 "gr1" 到 "gr2" 的硬链接:
"AppendMode""Extend" 不允许修改现有属性或链接:
用 "AppendMode""Overwrite",可以覆盖现有对象并添加新对象:
用 "AppendMode""Overwrite",只要数据格式和维度匹配,就可以修改现有数据集中的数据:
要将新对象附加到文件并保证不会修改文件中的现有结构,使用 "AppendMode""Preserve":
ByteOrdering (1)
"ComplexKeys" (3)
OverwriteTarget (3)
默认情况下,当 OverwriteTargetTrue,每次调用 Export 都会写入一个新文件:
用 OverwriteTargetFalse,如果输出文件已经存在,对 Export 的调用将失败:
导出为某些格式,例如HDF5,支持设置 OverwriteTarget"Append",这使得 Export 作用于输出文件(如果它已经存在),而不是覆盖: