目 錄
第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 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
VIII
Python 科學計算
目 錄
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
IX
目
錄
第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
X
Python 科學計算
目 錄
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 填充——floodFill .................. 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
XI
目
錄
第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
· · · · · · (
收起)