python科學計算是張若愚先生一個著作,張若愚先生畢業于華中理工大學(現華中科技大學)通信工程專業,2004年獲日本姬路工業大學(現兵庫縣立大學)碩士學位。python科學計算介紹如何用Python開發科學計算的應用程序,除了介紹數值計算之外,還著重介紹如何制作交互式的2D、3D圖像,如何設計精巧的程序界面,如何與C語言編寫的高速計算程序結合,如何編寫聲音、圖像處理算法等內容。書中涉及的Python擴展庫包括NumPy、SciPy、SymPy、matplotlib、Traits、TraitsUI、Chaco、TVTK、Mayavi、VPython、OpenCV等,涉及的應用領域包括數值運算、符號運算、二維圖表、三維數據可視化、三維動畫演示、圖像處理以及界面設計等。
python科學計算目錄
第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
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 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
第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
- PC官方版
- 安卓官方手機版
- IOS官方手機版