Python因为其自身的诸多优点而成为科学计算的**选择。本书是将Python 用于科学计算的实用指南,既介绍了相关的基础知识,又提供了丰富的精彩案例,并为读者总结了杰出实践经验。其主要内容包括:科学计算的基本概念与选择Python 的理由,科学工作流和科学计算的结构,科学项目相关数据的各个方面,用于科学计算的API 和工具包,如何利用Python 的NumPy 和SciPy 包完成数值计算,用Python 做符号计算,数据分析与可视化,并行与大规模计算,等等。
全面阐述Python科学计算基础内容
提供Python科学计算精彩案例
总结科学计算的任务、难点以及杰出实践经验
科学计算概况、结构
使用NumPy和SciPy完成数值计算
使用SymPy进行符号计算的概念和方法
使用matplotlib画图程序库做数据可视化
使用pandas、matplotlib和IPython组合做数据分析与可视化
Python的并行和高性能计算方法
科学计算应用、库和工具的Python开发案例
方案设计、代码编写、高性能计算等科学计算杰出实践
Hemant Kumar Mehta,博士,专注于分布式计算和科学计算领域,拥有十余年教学、科研和软件开发经验。他是ACM会员、IEEE高级会员,以及IACSIT、IAENG和MIR等实验室的高级会员。
陶俊杰,长期从事数据分析工作,酷爱Python,每天都和Python面对面,乐此不疲。本科毕业于北京交通大学机电学院,硕士毕业于北京交通大学经管学院。曾就职于中国移动设计院,目前在京东任职。
陈小莉,长期从事数据分析工作,喜欢Python。本科与硕士毕业于北京交通大学电信学院。目前在中科院从事科技文献与专利分析工作。
第1 章 科学计算概况与选择Python的理由 1
1.1 科学计算的定义 2
1.2 科学计算的简单处理流程 3
1.3 科学与工程领域的案例 5
1.4 解决复杂问题的策略 5
1.5 近似、误差及相关统计概念和术语 6
1.5.1 误差分析 7
1.5.2 敏感度、稳定性和准确性 7
1.5.3 后向与前向误差估计 8
1.5.4 误差可以忽略不计吗 8
1.6 计算机算术运算和浮点数 8
1.7 Python 编程语言简介 9
1.7.1 Python 语言的指导原则 9
1.7.2 为什么用Python 做科学计算 11
1.7.3 Python 的缺点 13
1.8 小结 13
第2 章 科学工作流和科学计算的结构 14
2.1 科学计算的数学部分 14
2.1.1 线性方程组 14
2.1.2 非线性方程组 15
2.1.3 最优化方法 16
2.1.4 内插法 17
2.1.5 外插法 17
2.1.6 数值积分 18
2.1.7 数值微分 18
2.1.8 微分方程 19
2.1.9 随机数生成器 20
2.2 Python 科学计算 21
2.2.1 NumPy 简介 22
2.2.2 SciPy 程序库 22
2.2.3 用pandas 做数据分析 23
2.3 IPython 交互式编程简介 23
2.3.1 IPython 并行计算 24
2.3.2 IPython Notebook 24
2.4 用SymPy 进行符号计算 26
2.4.1 SymPy 的主要特点 27
2.4.2 为什么用SymPy 28
2.5 画图程序库 28
2.6 小结 30
第3 章 有效地制造与管理科学数据 31
3.1 数据的基本概念 31
3.2 数据存储软件与工具箱 32
3.2.1 文件 33
3.2.2 数据库 33
3.3 常见的数据操作 34
3.4 科学数据的格式 35
3.5 现成的标准数据集 37
3.6 数据生成 41
3.7 模拟数据的生成(构造) 41
3.7.1 用Python 的内置函数生成随机数 42
3.7.2 基于统计分布的随机数生成器的设计和实现 45
3.7.3 一个用简单逻辑生成5位随机数的程序 46
3.8 大规模数据集的简要介绍 47
3.9 小结 48
第4 章 Python 科学计算API 49
4.1 Python 数值科学计算 49
4.1.1 NumPy 程序包 49
4.1.2 SciPy 程序包 52
4.1.3 简单的SciPy 程序 54
4.2 SymPy符号计算 57
4.2.1 计算机代数系统 57
4.2.2 通用CAS的特点 57
4.2.3 SymPy设计理念简介 58
4.2.4 SymPy模块 60
4.2.5 简单的范例程序 61
4.3 数据分析和可视化的API 和工具 63
4.3.1 用pandas进行数据分析和操作 63
4.3.2 用matplotlib进行数据可视化 64
4.3.3 用IPython实现Python的交互式计算 64
4.3.4 数据分析和可视化的示例程序 65
4.4 小结 67
第5 章 数值计算 68
5.1 NumPy 的基本对象 68
5.1.1 N 维数组对象 68
5.1.2 通用函数对象 72
5.1.3 NumPy 的数学模块 74
5.2 SciPy 的介绍 75
5.2.1 SciPy 的数学函数 75
5.2.2 高级模块/程序包 76
5.3 小结 97
第6 章 用Python 做符号计算 98
6.1 符号、表达式和基本运算 98
6.2 求解方程 99
6.3 有理数、指数和对数函数 100
6.4 多项式 100
6.5 三角函数和复数 101
6.6 线性代数 101
6.7 微积分 103
6.8 向量 105
6.9 物理模块 106
6.9.1 氢波函数 106
6.9.2 矩阵和Pauli代数 107
6.9.3 一维和三维量子谐振子 107
6.9.4 二次量子化 108
6.9.5 高能物理 108
6.9.6 力学 109
6.10 漂亮的打印功能 111
6.11 密码学模块 113
6.12 输入的句法分析 113
6.13 逻辑模块 114
6.14 几何模块 116
6.15 符号积分 117
6.16 多项式操作 119
6.17 集合 120
6.18 运算的简化和合并 121
6.19 小结 122
第7 章 数据分析与可视化 123
7.1 matplotlib 123
7.1.1 matplotlib的架构 124
7.1.2 matplotlib的画图方法 125
7.2 pandas 程序库 128
7.2.1 Series 128
7.2.2 DataFrame 129
7.2.3 Panel 130
7.2.4 pandas 数据结构的常用函数 131
7.2.5 时间序列与日期函数 137
7.2.6 处理缺失数据 140
7.3 I/O 操作 141
7.3.1 处理CSV文件 141
7.3.2 即开即用数据集 144
7.4 IPython 145
7.4.1 IPython 终端与系统命令行工具 146
7.4.2 IPython Notebook 149
7.5 小结 150
第8 章 并行与大规模科学计算 151
8.1 用IPython 做并行计算 152
8.2 IPython 并行计算架构 152
8.3 并行计算示例 154
8.3.1 并行装饰器 155
8.3.2 IPython 的魔法函数 155
8.4 IPython 的高级特性 157
8.4.1 容错执行 157
8.4.2 动态负载均衡 158
8.4.3 在客户端与引擎之间推拉对象 158
8.4.4 支持数据库存储请求与结果 160
8.4.5 在IPython 里使用MPI 161
8.4.6 管理任务之间的依赖关系 162
8.4.7 用Amazon EC2 的StarCluster启动IPython 167
8.5 IPython 数据安全措施 168
8.5.1 常用并行编程方法 168
8.5.2 在Python 中演示基于Hadoop的MapReduce 174
8.5.3 在Python 中运行Spark 176
8.6 小结 176
第9 章 真实案例介绍 177
9.1 用Python 开发的科学计算应用 177
9.1.1 “每个孩子一台笔记本”项目用Python 开发界面 177
9.1.2 ExpEYES——科学之眼 180
9.1.3 Python 开发的天气预测应用程序 181
9.1.4 Python 开发的航空器概念设计工具与API 182
9.1.5 OpenQuake 引擎 183
9.1.6 德国西马克公司的能源效率应用程序 184
9.1.7 高能物理数据分析的自动代码生成器 184
9.1.8 Python 的计算化学应用 186
9.2 Python 开发的盲音触觉识别系统 187
9.2.1 TAPTools 空中交通管制工具 187
9.2.2 光能效率检测的嵌入式系统 188
9.3 Python 开发的科学计算程序库 189
9.3.1 Tribon 公司的船舶设计API 189
9.3.2 分子建模工具箱 189
9.3.3 标准Python程序包 190
9.4 小结 191
第10 章 科学计算的最佳实践 192
10.1 方案设计阶段的最佳实践 192
10.2 功能实现阶段的最佳实践 194
10.3 数据管理与应用部署的最佳实践 196
10.4 实现高性能的最佳实践 197
10.5 数据隐私与安全的最佳实践 198
10.6 测试与维护的最佳实践 198
10.7 Python 常用的最佳实践 199
10.8 小结 200