目 录
第1章 科学计算介绍 1
1.1 Python数值计算环境 3
1.2 Python 4
1.3 IPython控制台 5
1.3.1 输入输出缓存 6
1.3.2 自动补全和对象自省(Object Introspection) 6
1.3.3 文档 7
1.3.4 与系统shell进行交互 7
1.3.5 IPython扩展 8
1.4 Jupyter 13
1.4.1 Jupyter QtConsole 13
1.4.2 Jupyter Notebook 14
1.4.3 Jupyter Lab 16
1.4.4 单元类型 16
1.4.5 编辑单元 17
1.4.6 Markdown单元 18
1.4.7 输出显示 19
1.4.8 nbconvert 22
1.5 Spyder集成开发环境 24
1.5.1 源代码编辑器 25
1.5.2 Spyder控制台 26
1.5.3 对象查看器 26
1.6 本章小结 26
1.7 扩展阅读 27
1.8 参考文献 27
第2章 向量、矩阵和多维数组 29
2.1 导入模块 30
2.2 NumPy Array对象 30
2.2.1 数据类型 31
2.2.2 内存中数组数据的顺序 33
2.3 创建数组 34
2.3.1 从列表和其他类数组对象创建数组 35
2.3.2 以常量填充的数组 35
2.3.3 以增量序列填充的数组 36
2.3.4 以等比数列填充的数组 37
2.3.5 Meshgrid数组 37
2.3.6 创建未初始化的数组 38
2.3.7 使用其他数组的属性创建数组 38
2.3.8 创建矩阵数组 38
2.4 索引和切片 39
2.4.1 一维数组 39
2.4.2 多维数组 41
2.4.3 视图 42
2.4.4 花式索引和布尔索引 43
2.5 调整形状和大小 45
2.6 向量化表达式 48
2.6.1 算术运算 49
2.6.2 逐个元素进行操作的函数 52
2.6.3 聚合函数 54
2.6.4 布尔数组和条件表达式 56
2.6.5 集合运算 59
2.6.6 数组运算 60
2.7 矩阵和向量运算 61
2.8 本章小结 66
2.9 扩展阅读 66
2.10 参考文献 66
第3章 符号计算 67
3.1 导入SymPy 67
3.2 符号 68
3.3 表达式 74
3.4 表达式操作 76
3.4.1 化简 76
3.4.2 展开 77
3.4.3 因式分解、合并同类项 78
3.4.4 分式分解、通分、消除公因子 79
3.4.5 替换 79
3.5 数值计算 80
3.6 微积分 81
3.6.1 导数 81
3.6.2 积分 83
3.6.3 级数展开 85
3.6.4 极限 86
3.6.5 和与积 87
3.7 方程 88
3.8 线性代数 89
3.9 本章小结 92
3.10 扩展阅读 93
3.11 参考文献 93
第4章 绘图和可视化 95
4.1 导入模块 96
4.2 入门 96
4.3 Figure对象 101
4.4 Axes实例 102
4.4.1 绘图类型 103
4.4.2 线条属性 103
4.4.3 图例 107
4.4.4 文本格式和注释 108
4.4.5 轴属性 110
4.5 Axes高级布局 119
4.5.1 图中图 119
4.5.2 plt.subplots 121
4.5.3 plt.subplot2grid 123
4.5.4 GridSpec 123
4.6 绘制色图 124
4.7 绘制3D图形 126
4.8 本章小结 128
4.9 扩展阅读 128
4.10 参考文献 129
第5章 方程求解 131
5.1 导入模块 131
5.2 线性方程组 132
5.2.1 方形方程组 133
5.2.2 矩形方程组 137
5.3 特征值问题 141
5.4 非线性方程 142
5.4.1 单变量方程 142
5.4.2 非线性方程组 149
5.5 本章小结 152
5.6 扩展阅读 152
5.7 参考文献 153
第6章 优化 155
6.1 导入模块 155
6.2 优化问题的分类 156
6.3 单变量优化 158
6.4 无约束的多变量优化问题 160
6.5 非线性最小二乘问题 167
6.6 受约束的优化问题 168
6.7 本章小结 175
6.8 扩展阅读 175
6.9 参考文献 176
第7章 插值 177
7.1 导入模块 177
7.2 插值概述 178
7.3 多项式 179
7.4 多项式插值 181
7.5 样条插值 185
7.6 多变量插值 188
7.7 本章小结 193
7.8 扩展阅读 193
7.9 参考文献 193
第8章 积分 195
8.1 导入模块 196
8.2 数值积分方法 196
8.3 使用SciPy进行数值积分 199
8.4 多重积分 204
8.5 符号积分和任意精度积分 208
8.6 积分变换 211
8.7 本章小结 214
8.8 扩展阅读 214
8.9 参考文献 214
第9章 常微分方程 215
9.1 导入模块 215
9.2 常微分方程 216
9.3 使用符号方法求解ODE 217
9.3.1 方向场 222
9.3.2 使用拉普拉斯变换求解ODE 225
9.4 数值法求解ODE 228
9.5 使用SciPy对ODE进行
数值积分 231
9.6 本章小结 242
9.7 扩展阅读 242
9.8 参考文献 243
第10章 稀疏矩阵和图 245
10.1 导入模块 245
10.2 SciPy中的稀疏矩阵 246
10.2.1 创建稀疏矩阵的函数 250
10.2.2 稀疏线性代数函数 252
10.2.3 线性方程组 252
10.2.4 图和网络 257
10.3 本章小结 264
10.4 扩展阅读 264
10.5 参考文献 264
第11章 偏微分方程 265
11.1 导入模块 266
11.2 偏微分方程 266
11.3 有限差分法 267
11.4 有限元法 272
11.5 使用FEniCS求解PDE 275
11.6 本章小结 293
11.7 扩展阅读 294
11.8 参考文献 294
第12章 数据处理和分析 295
12.1 导入模块 296
12.2 Pandas介绍 296
12.2.1 Series对象 296
12.2.2 DataFrame对象 299
12.2.3 时间序列 307
12.3 Seaborn图形库 317
12.4 本章小结 321
12.5 扩展阅读 322
12.6 参考文献 322
第13章 统计 323
13.1 导入模块 323
13.2 概率统计回顾 324
13.3 随机数 325
13.4 随机变量及其分布 328
13.5 假设检验 335
13.6 非参数法 339
13.7 本章小结 341
13.8 扩展阅读 341
13.9 参考文献 341
第14章 统计建模 343
14.1 导入模块 344
14.2 统计建模简介 344
14.3 使用Patsy定义统计模型 345
14.4 线性回归 352
14.5 离散回归 360
14.5.1 对数几率回归 361
14.5.2 泊松回归模型 365
14.6 时间序列 368
14.7 本章小结 372
14.8 扩展阅读 372
14.9 参考文献 372
第15章 机器学习 373
15.1 导入模块 374
15.2 机器学习回顾 374
15.3 回归 375
15.4 分类 384
15.5 聚类 388
15.6 本章小结 391
15.7 扩展阅读 392
15.8 参考文献 392
第16章 贝叶斯统计 393
16.1 导入模块 394
16.2 贝叶斯统计简介 394
16.3 定义模型 396
16.3.1 后验分布采样 400
16.3.2 线性回归 403
16.4 本章小结 413
16.5 扩展阅读 413
16.6 参考文献 413
第17章 信号处理 415
17.1 导入模块 415
17.2 频谱分析 416
17.2.1 傅里叶变换 416
17.2.2 加窗 421
17.2.3 频谱图 424
17.3 信号滤波器 427
17.3.1 卷积滤波器 428
17.3.2 FIR和IIR滤波器 429
17.4 本章小结 434
17.5 扩展阅读 434
17.6 参考文献 434
第18章 数据的输入输出 435
18.1 导入模块 436
18.2 CSV格式 436
18.3 HDF5 440
18.3.1 h5py库 441
18.3.2 PyTables库 451
18.3.3 Pandas HDFStore 455
18.4 JSON 456
18.5 序列化 460
18.6 本章小结 462
18.7 扩展阅读 462
18.8 参考文献 463
第19章 代码优化 465
19.1 导入模块 467
19.2 Numba 467
19.3 Cython 473
19.4 本章小结 482
19.5 扩展阅读 483
19.6 参考文献 483