Python语言在科学计算和数据处理领域应用前景广阔。大数据时代,催生了人们处理大量数据的实际需求。Python应用领域的拓展,越来越多的人将Python用于处理大型数值数据集,使用标准格式来进行数据的存储和通信也显得越来越重要,而HDF5也正迅速成为人们存储科学数据的选择。本书会带你迅速了解使用HDF5对大小从GB至TB的数字数据集进行存档和共享的细节、实践以及陷阱,体验在Python语言中用HDF5存储科学数据。通过真实世界的例子以及动手练习,你将依次学习科学数据集、层次性组织的组、用户定义的元数据,以及有互操作性的文件等主题。本书的例子对于Python2和Python3都适用。 本书包括以下内容:设置HDF5工具并创建HDF5文件。通过学习HDF5数据集对象来使用数据集。理解数据集分块和压缩等高级功能。使用组来学习如何利用HDF5层次性结构。使用HDF5的属性来添加元数据,创建可以自解释的文件。利用HDF5的类型系统创建有互操作性的文件。使用引用,命名类型和维度标尺来表示数据之间的关系。了解在Python中如何编写能跟HDF5互动的并行代码。本书生产力和创造力的推进器的一个真实的例子。本书会让你觉得'HDF5很简单'。
本书向任何有Python数据分析基本背景的人介绍如何在Python下使用HDF5。 本书将着重于HDF5的本地功能集,而不是Python的高层抽象。熟悉Python和NumPy的读者,更容易阅读和掌握本书的内容。本书适合有基础的Python开发者,尤其适合要使用Python开发数据存储和处理等相关应用的读者阅读参考。
1章 简介1
1.1 Python和HDF52
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还是Python38
2.2.2 代码示例9
2.2.3 NumPy9
2.2.4 HDF5和h5py11
2.2.5 IPython11
2.2.6 时间和优化12
2.3 HDF5工具13
2.3.1 HDFView13
2.3.2 ViTables14
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 何时以及如何进行resize37
第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 多个链接和visit64
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和并发HDF5108
9.4.1 一个非常快速的MPI介绍108
9.4.2 基于MPI的HDF5程序109
9.4.3 集体操作和独立操作110
9.4.4 原子操作模式111
0章 下一步114
10.1 寻求帮助114
10.2 做出贡献115