第1章 软件包的安装和介绍 1
1.1 Python简介 1
1.2安装软件包 2
1.2.1 Python(x,y) 2
1.2.2 Enthought Python Distribution(PPD) 3
1.3方便的开发工具 3
1.3.1 IPython 4
1.3.2 Spyder 8
1.3.3 Wing IDE 101 12
1.4函数库介绍 13
1.4.1数值计算库 13
1.4.2符号计算库 14
1.4.3界面设计 14
1.4.4绘图与可视化 14
1.4.5图像处理和计算机视觉 15
第2章 NumPy——快速处理数据 16
2.1 ndarray对象 16
2.1.1创建数组 16
2.1.2存取元素 21
2.1.3多维数组 24
2.1.4结构数组 29
2.1.5内存结构 32
2.2 ufunc运算 35
2.2.1四则运算 37
2.2.2比较和布尔运算 39
2.2.3自定义ufunc函数 40
2.2.4广播 42
2.2.5 ufunc函数的方法 46
2.3多维数组的下标存取 48
2.3.1下标对象 48
2.3.2整数数组作为下标 49
2.3.3一个复杂的例子 51
2.3.4布尔数组作为下标 53
2.4庞大的函数库 54
2.4.1求和、平均值、方差 54
2.4.2最值和排序 55
2.4.3多项式函数 57
2.4.4分段函数 60
2.4.5统计函数 62
2.5线性代数 65
2.5.1各种乘积运算 65
2.5.2解线性方程组 67
2.6掩码数组 69
2.7文件存取 72
2.8内存映射数组 75
第3章 Scipy——数值计算库 79
3.1常数和特殊函数 79
3.2优化——optimize 81
3.2.1最小二乘拟合 81
3.2.2函数最小值 84
3.2.3非线性方程组求解 86
3.3插值——interpolate 88
3.3.1 B样条曲线插值 88
3.3.2外推和Spline拟合 90
3.3.3二维插值 91
3.4数值积分——integrate 93
3.4.1球的体积 93
3.4.2解常微分方程组 95
3.5信号处理——signal 97
3.5.1中值滤波 97
3.5.2滤波器设计 98
3.6图像处理——ndimage 100
3.6.1膨胀和腐蚀 101
3.6.2 Hit和Miss 102
3.7统计——stats 105
3.7.1连续和离散概率分布 105
3.7.2二项、泊松、伽玛分布 108
3.8嵌入C语言程序weave 112
第4章 SymPy——符号运算好帮手 115
4.1从例子开始 115
4.1.1封面上的经典公式 115
4.1.2球体体积 117
4.2数学表达式 119
4.2.1符号 119
4.2.2数值 121
4.2.3运算符和函数 122
4.3符号运算 125
4.3.1表达式变换和化简 125
4.3.2方程 128
4.3.3微分 129
4.3.4微分方程 130
4.3.5积分 131
4.4其他功能 133
4.4.1平面几何 133
4.4.2绘图 135
第5章 matplotlib——绘制精美的图表 139
5.1快速绘图 139
5.1.1使用pyplot模块绘图 139
5.1.2以面向对象方式绘图 142
5.1.3配置属性 143
5.1.4绘制多个子图 145
5.1.5配置文件 147
5.1.6在图表中显示中文 149
5.2 Artist对象 152
5.2.1 Artist对象的属性 154
5.2.2 Figure容器 155
5.2.3 Axes容器 156
5.2.4 Axis容器 159
5.2.5 Artist对象的关系 163
5.3坐标变换和注释 164
5.3.1 4种坐标系 167
5.3.2坐标变换的步骤 169
5.3.3制作阴影效果 173
5.3.4添加注释 174
5.4绘图函数简介 177
5.4.1对数坐标图 177
5.4.2极坐标图 178
5.4.3柱状图 179
5.4.4散列图 180
5.4.5图像 181
5.4.6等值线图 184
5.4.7三维绘图 187
第6章 Traits——为Python添加类型定义 190
6.1开发背景 190
6.2 Trait属性的功能 192
6.3 Trait类型对象 196
6.4 Trait的元数据 198
6.5预定义的Trait类型 200
6.6 Property属性 204
6.7 Trait属性监听 206
6.8 Event和Button属性 210
6.9 Trait属性的从属关系 211
6.10动态添加Trait属性 213
6.11创建自己的Trait类型 215
6.11.1从TraitType继承 215
6.11.2使用Trait() 217
6.11.3定义TraitHandler类 219
第7章 TraitsUI——轻松制作用户界面 221
7.1默认界面 221
7.2用View定义界面 222
7.2.1外部视图和内部视图 222
7.2.2多模型视图 226
7.2.3 Group对象 228
7.2.4配置视图 231
7.3用Handler控制界面和模型 232
7.3.1用Handler处理事件 233
7.3.2 Controller和UIInfo对象 237
7.3.3响应Trait属性的事件 238
7.4属性编辑器 240
7.4.1编辑器演示程序 241
7.4.2对象编辑器 243
7.4.3字符串列表编辑器 248
7.4.4对象列表编辑器 250
7.5菜单、工具条和状态栏 252
7.6设计自己的编辑器 255
7.6.1 Trait编辑器的工作原理 255
7.6.2制作matplotlib的编辑器 259
7.6.3 CSV数据绘图工具 262
第8章 Chaco——交互式图表 264
8.1面向脚本绘图 264
8.2面向应用绘图 265
8.2.1多条曲线 267
8.2.2 Plot对象的结构 271
8.2.3编辑绘图属性 275
8.2.4容器(Container) 276
8.3添加交互工具 279
8.3.1平移和缩放 279
8.3.2选取范围 282
8.3.3选取数据点 284
8.3.4套索工具 287
8.4二次开发 289
8.4.1用Kiva库在数组上绘图 290
8.4.2 Enable库的组件 292
8.4.3设计圆形选择工具 297
8.4.4制作动画演示 301
第9章 TVTK——数据的三维可视化 303
9.1流水线(Pipeline) 304
9.1.1显示圆锥 304
9.1.2用ivtk观察流水线 307
9.2数据集(Dataset) 313
9.2.1 ImageData 313
9.2.2 RectilinearGrid 318
9.2.3 StructuredGrid 319
9.2.4 PolyData 321
9.3可视化实例 324
9.3.1切面 325
9.3.2等值面 330
9.3.3流线 333
9.4 TVTK的改进 337
9.4.1 TVTK的基本用法 338
9.4.2 Trait属性 339
9.4.3序列化(Pickling) 339
9.4.4集合迭代 340
9.4.5数组操作 341
第10章 Mayavi——更方便的可视化 343
10.1用mlab快速绘图 343
10.1.1点和线 343
10.1.2 Mayavi的流水线 345
10.1.3二维图像的可视化 348
10.1.4网格面 352
10.1.5修改和控制流水线 356
10.1.6标量场 358
10.1.7矢量场 361
10.2 Mayavi和TVTK之间的关系 363
10.2.1显示TVTK流水线 363
10.2.2两条流水线之间的关系 365
10.3 Mayavi应用程序 367
10.3.1操作流水线 368
10.3.2命令行和对象浏览器 371
10.4将Mayavi嵌入到界面中 374
第11章 VPython——制作3D演示动画 378
11.1场景、物体和照相机 378
11.1.1控制场景窗口 380
11.1.2控制照相机 383
11.1.3模型的属性 384
11.1.4三维模型 387
11.2制作动画演示 390
11.2.1简单动画 390
11.2.2盒子中反弹的球 391
11.3与场景交互 393
11.3.1响应键盘事件 394
11.3.2响应鼠标事件 394
11.4用界面控制场景 397
11.5创建复杂模型 400
11.5.1 faces0的用法 400
11.5.2读入模型数据 402
第12章 OpenCV——图像处理和计算机视觉 408
12.1存储图像数据的Mat对象 409
12.1.1 Mat对象和NumPy数组 410
12.1.2像素点类型 414
12.1.3其他数据类型 415
12.1.4 Vector类型 417
12.1.5在图像上绘图 418
12.2图像处理 421
12.2.1二维卷积 421
12.2.2形态学运算 424
12.2.3填充——floodFilt 426
12.2.4去瑕疵——inpaint 427
12.3图像变换 428
12.3.1几何变换 428
12.3.2重映射——remap 430
12.3.3直方图统计 433
12.3.4二维离散傅立叶变换 437
12.4图像识别 440
12.4.1用霍夫变换检测直线和圆 440
12.4.2图像分割 444
12.4.3用SURF进行特征匹配 450
第13章 数据和文件 453
13.1声音的输入输出 453
13.1.1读写WAV文件 453
13.1.2用pyAudio播放和录音 456
13.2视频的输入输出 459
13.2.1读写视频文件 459
13.2.2安装视频编码 464
13.3读写HDF5文件 465
13.4读写Excel文件 469
13.4.1写Excel文件 469
13.4.2读Excel文件 471
第14章 数字信号系统 473
14.1 FIR和IIR滤波器 473
14.2 FIR滤波器设计 477
14.2.1用firwin()设计滤波器 479
14.2.2用remez()设计滤波器 481
14.2.3滤波器的级联 483
14.3 IIR滤波器设计 485
14.3.1巴特沃斯低通滤波器 485
14.3.2双线性变换 487
14.3.3滤波器的频带转换 490
14.4数字滤波器的频率响应 494
14.5二次均衡滤波器设计工具 497
14.6零相位滤波器 500
14.7重取样 501
第15章 频域信号处理 505
15.1 FFT演示程序 505
15.1.1 FFT知识复习 505
15.1.2合成时域信号 509
15.1.3三角波FFT演示程序 511
15.2观察信号的频谱 512
15.2.1窗函数 515
15.2.2频谱平均 517
15.2.3谱图 519
15.3卷积运算 522
15.3.1快速卷积 522
15.3.2分段运算 524
15.4信号处理 526
15.4.1基本框架 527
15.4.2频域滤波器 528
15.4.3频率变调处理 530
15.4.4用谱图差减法降噪 531
15.5 Hilbert变换 532
第16章 用C语言提高计算效率 537
16.1用ctypes调用DLL库 537
16.2用Weave嵌入C++程序 541
16.2.1 Weave的工作原理 541
16.2.2处理NumPy数组 543
16.2.3使用blitz()提速 546
16.2.4扩展模块 548
16.3用Cython将Python编译成C 549
16.3.1编译Cython程序 549
16.3.2提高计算效率 550
16.3.3快速访问NumPy数组 553
16.4用SWIG创建扩展模块 555
16.4.1 SWIG的调用方法和实例 555
16.4.2 SWIG基础 558
16.4.3 SWIG处理NumPy数组 566
第17章 自适应滤波器 571
17.1自适应滤波器简介 571
17.1.1系统识别 571
17.1.2信号预测 572
17.1.3信号均衡 572
17.2 NLMS计算公式 573
17.3用NumPy实现NLMS算法 575
17.3.1系统辨识模拟 577
17.3.2信号均衡模拟 579
17.3.3卷积逆运算 581
17.4用C语言加速NLMS运算 583
17.4.1用SWIG编写扩展模块 583
17.4.2用Weave嵌入C++程序 586
第18章 单摆和双摆模拟 588
18.1单摆模拟 588
18.1.1小角度时的摆动周期 589
18.1.2大角度时的摆动周期 590
18.2双摆模拟 592
18.2.1公式推导 592
18.2.2微分方程的数值解 595
18.2.3动画演示 598
第19章 分形几何 599
19.1 Mandelbrot集合 599
19.1.1使用NumPy加速计算 601
19.1.2使用Weave加速计算 603
19.1.3连续的逃逸时间 604
19.1.4 Mandelbrot演示程序 605
19.2迭代函数系统(IFS) 606
19.2.1二维仿射变换 610
19.2.2迭代函数系统设计器 610
19.3 L-System分形 613
19.4分形山脉 616
19.4.1一维中点移位法 616
19.4.2二维中点移位法 618
19.4.3菱形方形算法 619