相关截图:
资料简介:
本书介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,还着重介绍如何制作交互式的2D、3D图像,如何设计精巧的程序界面,如何与C语言编写的高速计算程序结合,如何编写声音、图像处理算法等内容。书中涉及的Python扩展库包括NumPy、SciPy、SymPy、matplotlib、Traits、TraitsUI、Chaco、TVTK、Mayavi、VPython、OpenCV等,涉及的应用领域包括数值运算、符号运算、二维图表、三维数据可视化、三维动画演示、图像处理以及界面设计等。
书中以大量实例引导读者逐步深入学习,每个实例程序都有详尽的解释,并都能在本书推荐的运行环境中正常运行。此外,本书附有大量的图表和插图,力求减少长篇的理论介绍和公式推导,以便读者通过实例和数据学习并掌握理论知识。
资料目录:
第1章 软件包的安装和介绍1
1.1 Python简介1
1.2 安装软件包2
1.2.1 Python(x,y)2
1.2.2 Enthought Python Distribution
(EPD)3
1.3 方便的开发工具3
1.3.1 IPython4
1.3.2 Spyder8
1.3.3 Wing IDE 10112
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 优化——optimize81
3.2.1 最小二乘拟合81
3.2.2 函数最小值84
3.2.3 非线性方程组求解86
3.3 插值——interpolate88
3.3.1 B样条曲线插值88
3.3.2 外推和Spline拟合90
3.3.3 二维插值91
3.4 数值积分——integrate93
3.4.1 球的体积93
3.4.2 解常微分方程组95
3.5 信号处理——signal97
3.5.1 中值滤波97
3.5.2 滤波器设计98
3.6 图像处理——ndimage100
3.6.1 膨胀和腐蚀101
3.6.2 Hit和Miss102
3.7 统计——stats105
3.7.1 连续和离散概率分布105
3.7.2 二项、泊松、伽玛分布108
3.8 嵌入C语言程序——weave112
第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 ImageData313
9.2.2 RectilinearGrid318
9.2.3 StructuredGrid319
9.2.4 PolyData321
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 faces()的用法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 填充——floodFill426
12.2.4 去瑕疵——inpaint427
12.3 图像变换428
12.3.1 几何变换428
12.3.2 重映射——remap430
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编译
成C549
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