第1章 简介 1
1.1 Python和HDF5 2
1.1.1 数据和元数据的组织 2
1.1.2 大数据复制 3
1.2 HDF5到底是什么 4
1.2.1 HDF5文件规格 5
1.2.2 HDF5标准库 6
1.2.3 HDF5生态系统 6
第2章 开始使用 7
2.1 HDF基本原理 7
2.2 设置 8
2.2.1 Python2还是Python3 8
2.2.2 代码示例 9
2.2.3 NumPy 9
2.2.4 HDF5和h5py 11
2.2.5 IPython 11
2.2.6 时间和优化 12
2.3 HDF5工具 13
2.3.1 HDFView 13
2.3.2 ViTables 14
2.3.3 命令行工具 15
2.4 你的第一个HDF5文件 16
2.4.1 使用环境管理器 17
2.4.2 文件驱动 18
2.4.3 用户块 19
第3章 使用数据集 20
3.1 数据集基础 20
3.1.1 类型和形状 20
3.1.2 读和写 21
3.1.3 创建空数据集 22
3.1.4 显式指定存储类型来节省空间 22
3.1.5 自动类型转换和直读 23
3.1.6 用astype读 24
3.1.7 改变形状 25
3.1.8 默认填充值 25
3.2 读写数据 25
3.2.1 高效率切片 26
3.2.2 start-stop-step索引 27
3.2.3 多维切片和标量切片 28
3.2.4 布尔索引 29
3.2.5 坐标列表 30
3.2.6 自动广播 31
3.2.7 直读入一个已存在的数组 32
3.2.8 数据类型注解 33
3.3 改变数据集的形状 34
3.3.1 创建可变形数据集 35
3.3.2 用resize重新组织数据 36
3.3.3 何时以及如何进行resize 37
第4章 让分块和压缩来帮忙 38
4.1 连续存储 38
4.2 分块存储 40
4.3 设置分块形状 41
4.3.1 自动分块 41
4.3.2 手动选择一个形状 42
4.4 性能实例:可变形数据集 43
4.5 过滤器和压缩 44
4.5.1 过滤器流水线 45
4.5.2 压缩过滤器 45
4.5.3 GZIP/DEFLATE压缩器 46
4.5.4 SZIP压缩器 46
4.5.5 LZF压缩器 47
4.5.6 性能 47
4.6 其他过滤器 48
4.6.1 SHUFFLE过滤器 48
4.6.2 FLETCHER32过滤器 49
4.7 第三方过滤器 50
第5章 组、链接和迭代:HDF5的层次性 51
5.1 根组和子组 51
5.2 组的基本原理 52
5.2.1 字典风格的访问 52
5.2.2 特殊属性 53
5.3 使用链接 53
5.3.1 硬链接 53
5.3.2 剩余空间和重新打包 55
5.3.3 软链接 55
5.3.4 外部链接 56
5.3.5 对象名字注解 58
5.3.6 用get决定对象类型 58
5.3.7 用require简化你的应用程序 59
5.4 迭代和容器 60
5.4.1 组如何存储 61
5.4.2 字典风格的遍历 61
5.4.3 测试存在性 62
5.5 用Visitor模式多级遍历 63
5.5.1 以名字访问 63
5.5.2 多个链接和visit 64
5.5.3 访问对象 65
5.5.4 遍历中止:一个简单的搜索策略 66
5.6 复制对象 66
5.7 对象比较和哈希 67
第6章 用特征存储元数据 69
6.1 特征基本原理 69
6.1.1 类型猜测 70
6.1.2 字符串和文件匹配 72
6.1.3 Python对象 73
6.1.4 显式指定类型 74
6.2 真实世界的例子:粒子加速数据库 76
6.2.1 基于HDF5的应用格式 76
6.2.2 数据分析 77
第7章 更多关于类型 79
7.1 HDF5类型系统 79
7.2 整型和浮点 80
7.3 定长字符串 81
7.4 变长字符串 81
7.4.1 变长字符串的数据类型 82
7.4.2 变长字符串数据集的使用 83
7.4.3 字节字符串和Unicode字符串 83
7.4.4 使用Unicode字符串 84
7.4.5 不要在字符串中保存二进制数据 85
7.4.6 确保你Python 2程序的未来 85
7.5 复合类型 85
7.6 复数类型 87
7.7 枚举类型 87
7.8 布尔类型 88
7.9 数组类型 89
7.10 不透明类型 90
7.11 日期和时间 91
第8章 通过引用、类型和维度标尺来组织数据 92
8.1 对象引用 92
8.1.1 创建和解引用 92
8.1.2 引用是一种“永不失效”的链接 93
8.1.3 引用是一种数据 94
8.2 区域引用 95
8.2.1 创建和读取区域引用 95
8.2.2 复杂索引 96
8.2.3 用区域引用获得数据集 96
8.3 命名类型 97
8.3.1 数据类型对象 97
8.3.2 链接命名类型 98
8.3.3 管理命名类型 98
8.4 维度标尺 98
8.4.1 创建维度标尺 99
8.4.2 在数据集上添加标尺 100
第9章 HDF5并发性:多线程和多进程 102
9.1 Python并发的基本概念 102
9.2 多线程 103
9.3 多进程 105
9.4 MPI和并发HDF5 108
9.4.1 一个非常快速的MPI介绍 108
9.4.2 基于MPI的HDF5程序 109
9.4.3 集体操作和独立操作 110
9.4.4 原子操作模式 111
第10章 下一步 114
10.1 寻求帮助 114
10.2 做出贡献 115