第1章Python科學計算環境的安裝與簡介 11.1Python簡介 1
1.1.1Python2還是Python3 1
1.1.2開發環境 2
1.1.3集成開發環境(IDE) 5
1.2IPythonNotebook入門 9
1.2.1基本操作 10
1.2.2魔法(Magic)命令 12
1.2.3Notebook的顯示系統 20
1.2.4定制IPythonNotebook 24
1.3擴展庫介紹 27
1.3.1數值計算庫 27
1.3.2符號計算庫 28
1.3.3繪圖與可視化 28
1.3.4數據處理和分析 29
1.3.5界面設計 30
1.3.6圖像處理和計算機視覺 31
1.3.7提高運算速度 31
第2章NumPy-快速處理數據 33
2.1ndarray對象 33
2.1.1創建 34
2.1.2元素類型 35
2.1.3自動生成數組 37
2.1.4存取元素 40
2.1.5多維數組 43
2.1.6結構數組 47
2.1.7內存結構 50
2.2ufunc函數 56
2.2.1四則運算 58
2.2.2比較運算和布爾運算 59
2.2.3自定義ufunc函數 61
2.2.4廣播 62
2.2.5ufunc的方法 66
2.3多維數組的下標存取 68
2.3.1下標對象 68
2.3.2整數數組作為下標 70
2.3.3一個復雜的例子 72
2.3.4布爾數組作為下標 73
2.4龐大的函數庫 74
2.4.1隨機數 74
2.4.2求和、平均值、方差 77
2.4.3大小與排序 81
2.4.4統計函數 86
2.4.5分段函數 89
2.4.6操作多維數組 92
2.4.7多項式函數 96
2.4.8多項式函數類 98
2.4.9各種乘積運算 103
2.4.10廣義ufunc函數 106
2.5實用技巧 110
2.5.1動態數組 110
2.5.2和其他對象共享內存 112
2.5.3與結構數組共享內存 115
第3章SciPy-數值計算庫 117
3.1常數和特殊函數 117
3.2擬合與優化-optimize 119
3.2.1非線性方程組求解 120
3.2.2最小二乘擬合 121
3.2.3計算函數局域最小值 125
3.2.4計算全域最小值 127
3.3線性代數-linalg 128
3.3.1解線性方程組 129
3.3.2最小二乘解 130
3.3.3特征值和特征向量 132
3.3.4奇異值分解-SVD 134
3.4統計-stats 136
3.4.1連續概率分布 136
3.4.2離散概率分布 139
3.4.3核密度估計 140
3.4.4二項分布、泊松分布、伽瑪分布 142
3.4.5學生t-分布與t檢驗 147
3.4.6卡方分布和卡方檢驗 151
3.5數值積分-integrate 154
3.5.1球的體積 154
3.5.2解常微分方程組 156
3.5.3ode類 157
3.5.4信號處理-signal 164
3.5.5中值濾波 164
3.5.6濾波器設計 165
3.5.7連續時間線性系統 167
3.6插值-interpolate 172
3.6.1一維插值 172
3.6.2多維插值 177
3.7稀疏矩陣-sparse 181
3.7.1稀疏矩陣的存儲形式 182
3.7.2最短路徑 183
3.8圖像處理-ndimage 186
3.8.1形態學圖像處理 187
3.8.2圖像分割 192
3.9空間算法庫-spatial 195
3.9.1計算最近旁點 195
3.9.2凸包 199
3.9.3沃羅諾伊圖 201
3.9.4德勞內三角化 204
第4章matplotlib-繪制精美的圖表 207
4.1快速繪圖 207
4.1.1使用pyplot模塊繪圖 207
4.1.2面向對象方式繪圖 210
4.1.3配置屬性 211
4.1.4繪制多子圖 212
4.1.5配置文件 215
4.1.6在圖表中顯示中文 217
4.2Artist對象 220
4.2.1Artist的屬性 221
4.2.2Figure容器 223
4.2.3Axes容器 224
4.2.4Axis容器 226
4.2.5Artist對象的關系 230
4.3坐標變換和注釋 231
4.3.14種坐標系 234
4.3.2坐標變換的流水線 236
4.3.3制作陰影效果 240
4.3.4添加注釋 241
4.4塊、路徑和集合 243
4.4.1Path與Patch 243
4.4.2集合 245
4.5繪圖函數簡介 255
4.5.1對數坐標圖 255
4.5.2極坐標圖 256
4.5.3柱狀圖 257
4.5.4散列圖 258
4.5.5圖像 259
4.5.6等值線圖 261
4.5.7四邊形網格 264
4.5.8三角網格 267
4.5.9箭頭圖 269
4.5.10三維繪圖 273
4.6matplotlib技巧集 274
4.6.1使用agg后臺在圖像上繪圖 274
4.6.2響應鼠標與鍵盤事件 277
4.6.3動畫 285
4.6.4添加GUI面板 288
第5章Pandas-方便的數據分析庫 291
5.1Pandas中的數據對象 291
5.1.1Series對象 291
5.1.2DataFrame對象 293
5.1.3Index對象 297
5.1.4MultiIndex對象 298
5.1.5常用的函數參數 300
5.1.6DataFrame的內部結構 301
5.2下標存取 303
5.2.1[]操作符 304
5.2.2.loc[]和.iloc[]存取器 304
5.2.3獲取單個值 306
5.2.4多級標簽的存取 306
5.2.5query()方法 307
5.3文件的輸入輸出 307
5.3.1CSV文件 308
5.3.2HDF5文件 309
5.3.3讀寫數據庫 313
5.3.4使用Pickle序列化 314
5.4數值運算函數 315
5.5時間序列 323
5.5.1時間點、時間段、時間間隔 323
5.5.2時間序列 326
5.5.3與NaN相關的函數 329
5.5.4改變DataFrame的形狀 333
5.6分組運算 338
5.6.1groupby()方法 339
5.6.2GroupBy對象 340
5.6.3分組-運算-合并 341
5.7數據處理和可視化實例 347
5.7.1分析Pandas項目的提交歷史 347
5.7.2分析空氣質量數據 354
第6章SymPy-符號運算好幫手 359
6.1從例子開始 359
6.1.1封面上的經典公式 359
6.1.2球體體積 361
6.1.3數值微分 362
6.2數學表達式 365
6.2.1符號 365
6.2.2數值 367
6.2.3運算符和函數 368
6.2.4通配符 371
6.3符號運算 373
6.3.1表達式變換和化簡 373
6.3.2方程 376
6.3.3微分 377
6.3.4微分方程 378
6.3.5積分 379
6.4輸出符號表達式 380
6.4.1lambdify 381
6.4.2用autowrap()編譯表達式 381
6.4.3使用cse()分步輸出表達式 384
6.5機械運動模擬 385
6.5.1推導系統的微分方程 386
6.5.2將符號表達式轉換為程序 388
6.5.3動畫演示 389
第7章Traits&TraitsUI-輕松制作圖形界面 393
7.1Traits類型入門 393
7.1.1什么是Traits屬性 393
7.1.2Trait屬性的功能 396
7.1.3Trait類型對象 399
7.1.4Trait的元數據 401
7.2Trait類型 403
7.2.1預定義的Trait類型 403
7.2.2Property屬性 406
7.2.3Trait屬性監聽 408
7.2.4Event和Button屬性 411
7.2.5動態添加Trait屬性 412
7.3TraitsUI入門 413
7.3.1默認界面 414
7.3.2用View定義界面 415
7.4用Handler控制界面和模型 425
7.4.1用Handler處理事件 426
7.4.2Controller和UIInfo對象 429
7.4.3響應Trait屬性的事件 431
7.5屬性編輯器 432
7.5.1編輯器演示程序 433
7.5.2對象編輯器 436
7.5.3自定義編輯器 440
7.6函數曲線繪制工具 444
第8章TVTK與Mayavi-數據的三維可視化 451
8.1VTK的流水線(Pipeline) 452
8.1.1顯示圓錐 452
8.1.2用ivtk觀察流水線 455
8.2數據集 461
8.2.1ImageData 461
8.2.2RectilinearGrid 466
8.2.3StructuredGrid 467
8.2.4PolyData 470
8.3TVTK的改進 473
8.3.1TVTK的基本用法 474
8.3.2Trait屬性 475
8.3.3序列化 476
8.3.4集合迭代 476
8.3.5數組操作 477
8.4TVTK可視化實例 478
8.4.1切面 479
8.4.2等值面 484
8.4.3流線 487
8.4.4計算圓柱的相貫線 491
8.5用mlab快速繪圖 496
8.5.1點和線 497
8.5.2Mayavi的流水線 498
8.5.3二維圖像的可視化 501
8.5.4網格面mesh 505
8.5.5修改和創建流水線 508
8.5.6標量場 511
8.5.7矢量場 513
8.6將TVTK和Mayavi嵌入界面 515
8.6.1TVTK場景的嵌入 516
8.6.2Mayavi場景的嵌入 518
第9章OpenCV-圖像處理和計算機視覺 523
9.1圖像的輸入輸出 523
9.1.1讀入并顯示圖像 523
9.1.2圖像類型 524
9.1.3圖像輸出 525
9.1.4字節序列與圖像的相互轉換 526
9.1.5視頻輸出 527
9.1.6視頻輸入 529
9.2圖像處理 530
9.2.1二維卷積 530
9.2.2形態學運算 532
9.2.3填充-floodFill 534
9.2.4去瑕疵-inpaint 536
9.3圖像變換 537
9.3.1幾何變換 537
9.3.2重映射-remap 540
9.3.3直方圖 543
9.3.4二維離散傅立葉變換 547
9.3.5用雙目視覺圖像計算深度信息 550
9.4圖像識別 553
9.4.1用霍夫變換檢測直線和圓 553
9.4.2圖像分割 558
9.4.3SURF特征匹配 561
9.5形狀與結構分析 564
9.5.1輪廓檢測 565
9.5.2輪廓匹配 568
9.6類型轉換 569
9.6.1分析cv2的源程序 570
9.6.2Mat對象 572
9.3.3在cv和cv2之間轉換圖像對象 574
第10章Cython-編譯Python程序 575
10.1配置編譯器 575
10.2Cython入門 577
10.2.1計算矢量集的距離矩陣 577
10.2.2將Cython程序編譯成擴展模塊 579
10.2.3C語言中的Python對象類型 581
10.2.4使用cdef關鍵字聲明變量類型 582
10.2.5使用def定義函數 585
10.2.6使用cdef定義C語言函數 586
10.3高效處理數組 587
10.3.1Cython的內存視圖 587
10.3.2用降采樣提高繪圖速度 592
10.4使用Python標準對象和API 596
10.4.1操作list對象 596
10.4.2創建tuple對象 597
10.4.3用array.array作為動態數組 598
10.5擴展類型 600
10.5.1擴展類型的基本結構 600
10.5.2一維浮點數向量類型 601
10.5.3包裝ahocorasick庫 606
10.6Cython技巧集 612
10.6.1創建ufunc函數 613
10.6.2快速調用DLL中的函數 617
10.6.3調用BLAS函數 620
第11章實例 627
11.1使用泊松混合合成圖像 627
11.1.1泊松混合算法 627
11.1.2編寫代碼 629
11.1.3演示程序 632
11.2經典力學模擬 632
11.2.1懸鏈線 633
11.2.2最速降線 638
11.2.3單擺模擬 641
11.3推薦算法 644
11.3.1讀入數據 645
11.3.2推薦性能評價標準 646
11.3.3矩陣分解 647
11.3.4使用最小二乘法實現矩陣分解 648
11.3.5使用Cython迭代實現矩陣分解 651
11.4頻域信號處理 654
11.4.1FFT知識復習 654
11.4.2合成時域信號 657
11.4.3觀察信號的頻譜 660
11.4.4卷積運算 671
11.5布爾可滿足性問題求解器 675
11.5.1用Cython包裝PicoSAT 678
11.5.2數獨游戲 682
11.5.3掃雷游戲 686
11.6分形 693
11.6.1Mandelbrot集合 693
11.6.2迭代函數系統 699
11.6.3L-System分形 706
11.6.4分形山脈 710