一.目录

第1章 软件包的安装和介绍 1

11 Python简介 1


12 安装软件包 2


121 Python(x,y) 2


122 Enthought Python Distribution (EPD)  3


13 方便的开发工具 3


131 IPython  4


132 Spyder  8


133 Wing IDE 101  12


14 函数库介绍 13


141 数值计算库  13


142 符号计算库  14


143 界面设计  14


144 绘图与可视化  14


145 图像处理和计算机视觉  15


第2章 NumPy——快速处理数据  16


21 ndarray对象 16


211 创建数组  16


212 存取元素  21


213 多维数组  24


214 结构数组  29


215 内存结构  32


22 ufunc运算 35


221 四则运算  37


222 比较和布尔运算  39


223 自定义ufunc函数  40


224 广播  42


225 ufunc函数的方法  46


23 多维数组的下标存取 48


231 下标对象  48


232 整数数组作为下标  49


233 一个复杂的例子  51


234 布尔数组作为下标  53


24 庞大的函数库  54


241 求和、平均值、方差  54


242 最值和排序  55


243 多项式函数  57


244 分段函数  60


245 统计函数  62


25 线性代数  65


251 各种乘积运算  65


252 解线性方程组  67


26 掩码数组  69


27 文件存取  72


28 内存映射数组  75


第3章 SciPy——数值计算库  79


31 常数和特殊函数  79


32 优化——optimize  81


321 最小二乘拟合  81


322 函数最小值  84


323 非线性方程组求解  86


33 插值——interpolate  88


331 B样条曲线插值  88


332 外推和Spline拟合  90


333 二维插值  91


34 数值积分——integrate  93


341 球的体积  93


342 解常微分方程组  95


35 信号处理——signal  97


VIII


Python 科学计算


目 录


351 中值滤波  97


352 滤波器设计  98


36 图像处理——ndimage 100


361 膨胀和腐蚀  101


362 Hit和Miss  102


37 统计——stats 105


371 连续和离散概率分布 105


372 二项、泊松、伽玛分布  108


38 嵌入C语言程序——weave 112


第4章 SymPy——符号运算好帮手  115


41 从例子开始 115


411 封面上的经典公式 115


412 球体体积  117


42 数学表达式 119


421 符号  119


422 数值  121


423 运算符和函数  122


43 符号运算 125


431 表达式变换和化简 125


432 方程  128


433 微分  129


434 微分方程  130


435 积分  131


44 其他功能 133


441 平面几何  133


442 绘图  135


第5章 matplotlib——绘制精美 的图表  139


51 快速绘图 139


511 使用pyplot模块绘图  139


512 以面向对象方式绘图 142


513 配置属性  143


514 绘制多个子图  145


515 配置文件  147


516 在图表中显示中文 149


52 Artist对象  152


521 Artist对象的属性  154


522 Figure容器  155


523 Axes容器  156


524 Axis容器  159


525 Artist对象的关系  163


53 坐标变换和注释  164


531 4种坐标系  167


532 坐标变换的步骤  169


533 制作阴影效果  173


534 添加注释  174


54 绘图函数简介  177


541 对数坐标图  177


542 极坐标图  178


543 柱状图  179


544 散列图  180


545 图像  181


546 等值线图  184


547 三维绘图  187


第6章 Traits——为Python添加类型 定义  190


61 开发背景  190


62 Trait属性的功能  192


63 Trait类型对象  196


64 Trait的元数据  198


65 预定义的Trait类型  200


66 Property属性  204


67 Trait属性监听  206


68 Event和Button属性  210


69 Trait属性的从属关系  211


610 动态添加Trait属性  213


611 创建自己的Trait类型  215


6111 从TraitType继承  215


6112 使用Trait()  217


6113 定义TraitHandler类  219


第7章 TraitsUI——轻松制作用户 界面  221


71 默认界面 221


72 用View定义界面 222


721 外部视图和内部视图 222


722 多模型视图  226


723 Group对象  228


724 配置视图  231


73 用Handler控制界面和模型 232


731 用Handler处理事件  233


732 Controller和UIInfo对象 237


733 响应Trait属性的事件  238


74 属性编辑器 240


741 编辑器演示程序  241


742 对象编辑器  243


743 字符串列表编辑器 248


744 对象列表编辑器  250


75 菜单、工具条和状态栏 252


76 设计自己的编辑器 255


761 Trait编辑器的工作原理  255


762 制作matplotlib的编辑器  259


763 CSV数据绘图工具  262


第8章 Chaco——交互式图表  264


81 面向脚本绘图 264


82 面向应用绘图 265


821 多条曲线  267


822 Plot对象的结构  271


823 编辑绘图属性  275


824 容器(Container)  276


83 添加交互工具 279


831 平移和缩放  279


832 选取范围  282


833 选取数据点  284


834 套索工具  287


84 二次开发 289


841 用Kiva库在数组上绘图  290


842 Enable库的组件  292


843 设计圆形选择工具  297


844 制作动画演示  301


第9章 TVTK——数据的三维可视化  303


91 流水线(Pipeline)  304


911 显示圆锥  304


912 用ivtk观察流水线  307


92 数据集(Dataset)  313


921 ImageData  313


922 RectilinearGrid  318


923 StructuredGrid 319


924 PolyData  321


93 可视化实例  324


931 切面  325


932 等值面  330


933 流线  333


94 TVTK的改进  337


941 TVTK的基本用法  338


942 Trait属性  339


943 序列化(Pickling)  339


944 集合迭代  340


945 数组操作  341


第10章 Mayavi——更方便的可视化  343


101 用mlab快速绘图  343


1011 点和线  343


1012 Mayavi的流水线  345


1013 二维图像的可视化  348


1014 网格面  352


1015 修改和控制流水线  356


1016 标量场  358


1017 矢量场  361


102 Mayavi和TVTK之间 的关系  363


1021 显示TVTK流水线  363


1022 两条流水线之间的关系  365


X


Python 科学计算


目 录


103 Mayavi应用程序 367


1031 操作流水线  368


1032 命令行和对象浏览器  371


104 将Mayavi嵌入到界面中 374


第11章 VPython——制作3D演示 动画  378


111 场景、物体和照相机 378


1111 控制场景窗口  380


1112 控制照相机  383


1113 模型的属性  384


1114 三维模型  387


112 制作动画演示 390


1121 简单动画  390


1122 盒子中反弹的球  391


113 与场景交互 393


1131 响应键盘事件  394


1132 响应鼠标事件  394


114 用界面控制场景 397


115 创建复杂模型 400


1151 faces()的用法  400


1152 读入模型数据  402


第12章 OpenCV——图像处理和计算机 视觉  408


121 存储图像数据的Mat对象 409


1211 Mat对象和NumPy数组  410


1212 像素点类型  414


1213 其他数据类型  415


1214 Vector类型  417


1215 在图像上绘图  418


122 图像处理 421


1221 二维卷积  421


1222 形态学运算  424


1223 填充——floodFill  426


1224 去瑕疵——inpaint  427


123 图像变换 428


1231 几何变换  428


1232 重映射——remap  430


1233 直方图统计  433


1234 二维离散傅立叶变换  437


124 图像识别  440


1241 用霍夫变换检测直线 和圆  440


1242 图像分割  444


1243 用SURF进行特征匹配  450


第13章 数据和文件  453


131 声音的输入输出  453


1311 读写WAV文件  453


1312 用pyAudio播放和录音  456


132 视频的输入输出  459


1321 读写视频文件  459


1322 安装视频编码  464


133 读写HDF5文件  465


134 读写Excel文件  469


1341 写Excel文件  469


1342 读Excel文件  471


第14章 数字信号系统  473


141 FIR和IIR滤波器  473


142 FIR滤波器设计  477


1421 用firwin()设计滤波器  479


1422 用remez()设计滤波器  481


1423 滤波器的级联  483


143 IIR滤波器设计  485


1431 巴特沃斯低通滤波器  485


1432 双线性变换  487


1433 滤波器的频带转换  490


144 数字滤波器的频率响应  494


145 二次均衡滤波器设计工具  497


146 零相位滤波器  500


147 重取样  501


第15章 频域信号处理  505


151 FFT演示程序 505


1511 FFT知识复习  505


1512 合成时域信号  509


1513 三角波FFT演示程序  511


152 观察信号的频谱 512


1521 窗函数  515


1522 频谱平均  517


1523 谱图  519


153 卷积运算 522


1531 快速卷积  522


1532 分段运算  524


154 信号处理 526


1541 基本框架  527


1542 频域滤波器  528


1543 频率变调处理  530


1544 用谱图差减法降噪  531


155 Hilbert变换 532


第16章 用C语言提高计算效率  537


161 用ctypes调用DLL库 537


162 用Weave嵌入C++程序 541


1621 Weave的工作原理  541


1622 处理NumPy数组  543


1623 使用blitz()提速 546


1624 扩展模块  548


163 用Cython将Python编译 成C 549


1631 编译Cython程序  549


1632 提高计算效率  550


1633 快速访问NumPy数组  553


164 用SWIG创建扩展模块 555


1641 SWIG的调用方法 和实例  555


1642 SWIG基础  558


1643 SWIG处理NumPy数组  566


第17章 自适应滤波器  571


171 自适应滤波器简介  571


1711 系统识别  571


1712 信号预测  572


1713 信号均衡  572


172 NLMS计算公式  573


173 用NumPy实现NLMS算法  575


1731 系统辨识模拟  577


1732 信号均衡模拟  579


1733 卷积逆运算  581


174 用C语言加速NLMS运算 583


1741 用SWIG编写扩展模块  583


1742 用Weave嵌入C++程序  586


第18章 单摆和双摆模拟  588


181 单摆模拟  588


1811 小角度时的摆动周期  589


1812 大角度时的摆动周期  590


182 双摆模拟  592


1821 公式推导  592


1822 微分方程的数值解  595


1823 动画演示  598


第19章 分形几何  599


191 Mandelbrot集合  599


1911 使用NumPy加速计算  601


1912 使用Weave加速计算  603


1913 连续的逃逸时间  604


1914 Mandelbrot演示程序  605


192 迭代函数系统(IFS)  606


1921 二维仿射变换  610


1922 迭代函数系统设计器  610


193 L-System分形  613


194 分形山脉  616


1941 一维中点移位法  616


1942 二维中点移位法  618


1943 菱形方形算法  619

二.计时

import datetime
start=datetime.datetime.now()
end=datetime.datetime.now()
print end-start