目 录
第1章 Python科学计算入门 1
1.1 Python数值计算环境 3
1.2 Python 4
1.3 IPython控制台 5
1.3.1 输入输出缓存 6
1.3.2 自动补全和对象自省 6
1.3.3 文档 7
1.3.4 与系统shell进行交互 7
1.3.5 IPython扩展 8
1.4 Jupyter 12
1.4.1 Jupyter QtConsole 13
1.4.2 Jupyter Notebook 13
1.4.3 Jupyter Lab 15
1.4.4 代码框类型 16
1.4.5 编辑代码框 16
1.4.6 Markdown代码框 17
1.4.7 富文本输出显示 19
1.4.8 nbconvert 21
1.5 Spyder集成开发环境 23
1.5.1 源代码编辑器 25
1.5.2 Spyder控制台 25
1.5.3 对象查看器 26
1.6 本章小结 26
1.7 扩展阅读 26
第2章 向量、矩阵和多维数组 27
2.1 导入模块 28
2.2 NumPy Array对象 28
2.2.1 数据类型 29
2.2.2 内存中数组数据的顺序 31
2.3 创建数组 32
2.3.1 从列表和其他类数组对象创建数组 33
2.3.2 以常量填充的数组 33
2.3.3 以递增序列填充的数组 34
2.3.4 以对数序列填充的数组 34
2.3.5 meshgrid数组 35
2.3.6 创建未初始化的数组 35
2.3.7 使用其他数组的属性创建数组 36
2.3.8 创建矩阵数组 36
2.4 索引和切片 37
2.4.1 一维数组 37
2.4.2 多维数组 38
2.4.3 视图 40
2.4.4 花式索引和布尔值索引 40
2.5 调整数组的形状和大小 42
2.6 向量化表达式 46
2.6.1 算术运算 47
2.6.2 逐元素进行操作的函数 49
2.6.3 聚合函数 51
2.6.4 布尔数组和条件表达式 53
2.6.5 集合运算 55
2.6.6 数组运算 56
2.7 矩阵和向量运算 57
2.8 本章小结 62
2.9 扩展阅读 62
第3章 符号计算 63
3.1 导入SymPy 64
3.2 符号 64
3.3 表达式 71
3.4 表达式操作 72
3.4.1 简化 72
3.4.2 展开 73
3.4.3 因式分解、合并同类项 74
3.4.4 分式分解、通分、消去公因子 75
3.4.5 替换 75
3.5 数值计算 76
3.6 微积分 77
3.6.1 导数 77
3.6.2 积分 79
3.6.3 级数展开 80
3.6.4 极限 82
3.6.5 和与积 82
3.7 方程 83
3.8 线性代数 85
3.9 本章小结 88
3.10 扩展阅读 88
第4章 绘图和可视化 89
4.1 导入模块 90
4.2 入门 91
4.3 Figure对象 95
4.4 Axes实例 96
4.4.1 绘图类型 97
4.4.2 线条属性 98
4.4.3 图例 101
4.4.4 文本格式和注释 102
4.4.5 轴属性 104
4.5 Axes高级布局 113
4.5.1 图中图 113
4.5.2 子图 114
4.5.3 subplot2grid 116
4.5.4 GridSpec 116
4.6 色图 117
4.7 3D图形 120
4.8 本章小结 122
4.9 扩展阅读 122
第5章 方程求解 123
5.1 导入模块 124
5.2 线性方程组 124
5.2.1 方形方程组 125
5.2.2 矩形方程组 129
5.3 特征值问题 132
5.4 非线性方程 134
5.4.1 单变量方程 134
5.4.2 非线性方程组 140
5.5 本章小结 143
5.6 扩展阅读 144
第6章 优化 145
6.1 导入模块 146
6.2 优化问题的分类 146
6.3 单变量优化 148
6.4 无约束的多变量优化问题 151
6.5 非线性最小二乘问题 157
6.6 受约束的优化问题 159
6.7 本章小结 165
6.8 扩展阅读 165
第7章 插值 166
7.1 导入模块 166
7.2 插值概述 167
7.3 多项式 168
7.4 多项式插值 170
7.5 样条插值 174
7.6 多变量插值 176
7.7 本章小结 181
7.8 扩展阅读 182
第8章 积分 183
8.1 导入模块 184
8.2 数值积分方法 184
8.3 使用SciPy进行数值积分 187
8.4 多重积分 192
8.5 符号积分和任意精度积分 196
8.6 积分变换 198
8.7 本章小结 201
8.8 扩展阅读 201
第9章 常微分方程 203
9.1 导入模块 203
9.2 常微分方程 204
9.3 使用符号方法求解ODE 205
9.3.1 方向场 210
9.3.2 使用拉普拉斯变换求解ODE 213
9.4 数值法求解ODE 216
9.5 使用SciPy对ODE进行数值积分 219
9.6 本章小结 229
9.7 扩展阅读 230
第10章 稀疏矩阵和图 231
10.1 导入模块 232
10.2 SciPy中的稀疏矩阵 232
10.2.1 创建稀疏矩阵的函数 236
10.2.2 稀疏线性代数函数 238
10.2.3 线性方程组 238
10.2.4 图和网络 243
10.3 本章小结 249
10.4 扩展阅读 249
第11章 偏微分方程 250
11.1 导入模块 251
11.2 偏微分方程 251
11.3 有限差分法 252
11.4 有限元法 257
11.5 使用FEniCS求解PDE 260
11.6 本章小结 277
11.7 扩展阅读 278
第12章 数据处理和分析 279
12.1 导入模块 280
12.2 Pandas介绍 280
12.2.1 Series对象 280
12.2.2 DataFrame对象 283
12.2.3 时间序列 291
12.3 Seaborn图形库 300
12.4 本章小结 304
12.5 扩展阅读 304
第13章 统计 306
13.1 导入模块 306
13.2 概率统计回顾 307
13.3 随机数 308
13.4 随机变量及其分布 312
13.5 假设检验 318
13.6 非参数法 322
13.7 本章小结 324
13.8 扩展阅读 324
第14章 统计建模 325
14.1 导入模块 326
14.2 统计建模简介 326
14.3 使用Patsy定义统计模型 327
14.4 线性回归 334
14.5 离散回归 342
14.5.1 逻辑回归 342
14.5.2 泊松回归模型 346
14.6 时间序列 349
14.7 本章小结 353
14.8 扩展阅读 353
第15章 机器学习 354
15.1 导入模块 355
15.2 机器学习回顾 355
15.3 回归 357
15.4 分类 365
15.5 聚类 369
15.6 本章小结 372
15.7 扩展阅读 373
第16章 贝叶斯统计 374
16.1 导入模块 375
16.2 贝叶斯统计简介 375
16.3 定义模型 377
16.3.1 后验分布采样 382
16.3.2 线性回归 384
16.4 本章小结 394
16.5 扩展阅读 394
第17章 信号处理 395
17.1 导入模块 395
17.2 频谱分析 396
17.2.1 傅里叶变换 396
17.2.2 窗口函数 400
17.2.3 频谱图 403
17.3 信号滤波器 407
17.3.1 卷积滤波器 407
17.3.2 FIR和IIR滤波器 409
17.4 本章小结 413
17.5 扩展阅读 413
第18章 数据的输入与输出 414
18.1 导入模块 415
18.2 CSV格式 415
18.3 HDF5 419
18.3.1 h5py库 420
18.3.2 PyTables库 430
18.3.3 Pandas HDFStore 433
18.4 Parquet 435
18.5 JSON 438
18.6 序列化 441
18.7 本章小结 443
18.8 扩展阅读 444
第19章 代码优化 445
19.1 导入模块 447
19.2 Numba 447
19.3 Cython 453
19.4 本章小结 462
19.5 扩展阅读 463
附录A 安装 464
A.1 Miniconda和conda 465
A.2 为Jupyter Notebook注册内核 470
A.3 安装一个完整的环境 470
A.4 本附录小结 473
A.5 扩展阅读 473
