本書詳細介紹Python科學計算中最常用的擴展庫NumPy、SciPy、matplotlib、Pandas、SymPy、TTK、Mayavi、OpenCV、Cython,涉及數值計算、界面制作、三維可視化、圖像處理、提高運算效率等多方面的內容。所附光盤中包含所有章節的Notebook以及便攜式運行環境WinPython,以方便讀者運行書中所有實例。
1. 使用Python各種擴展庫完成數值計算、界面制作、三維可視化、圖像處理、提高運算速度等任務
2. 光盤中提供作者本人整合開發的便攜式運行環境WinPython,省去讀者一一收集Python各個擴展庫并安裝的麻煩,涵蓋NumPy、SciPy、matplotlib、Pandas、SymPy、TVTK、Mayavi、OpenCV、Cython等
3. 文前精美彩插演示書中示例所展現的Python各擴展庫的強大處理效果,裝幀和排版都十分考究
張若愚,畢業于華中理工大學(現華中科技大學)通信工程專業,2004年獲日本姬路工業大學(現兵庫縣立大學)碩士學位。畢業后于日本神戶制鋼綜合研究所從事研究開發工作至今,研究方向為:嵌入式DSP信號處理系統開發,嵌入式MCU控制系統開發,工業控制軟件開發,信號處理、數據處理以及生產系統的計算機模擬。在工作中他積極采用Python作為主要編程語言,在數據處理、信號分析、工業控制、算法模擬等領域取得了較好的研究成果。已完成的研究課題有:嵌入式聲音分離系統、車載音響設備、超聲波探傷系統、壓縮機系統的數字模擬等。
第1章 Python科學計算環境的安裝與簡介 1
1.1 Python簡介 1
1.1.1 Python 2還是Python 3 1
1.1.2 開發環境 2
1.1.3 集成開發環境(IDE) 5
1.2 IPython Notebook入門 9
1.2.1 基本操作 10
1.2.2 魔法(Magic)命令 12
1.2.3 Notebook的顯示系統 20
1.2.4 定制IPython Notebook 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.1 ndarray對象 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.2 ufunc函數 56
2.2.1 四則運算 58
2.2.2 比較運算和布爾運算 59
2.2.3 自定義ufunc函數 61
2.2.4 廣播 62
2.2.5 ufunc的方法 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.3 ode類 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.2 Artist對象 220
4.2.1 Artist的屬性 221
4.2.2 Figure容器 223
4.2.3 Axes容器 224
4.2.4 Axis容器 226
4.2.5 Artist對象的關系 230
4.3 坐標變換和注釋 231
4.3.1 4種坐標系 234
4.3.2 坐標變換的流水線 236
4.3.3 制作陰影效果 240
4.3.4 添加注釋 241
4.4 塊、路徑和集合 243
4.4.1 Path與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.6 matplotlib技巧集 274
4.6.1 使用agg后臺在圖像上繪圖 274
4.6.2 響應鼠標與鍵盤事件 277
4.6.3 動畫 285
4.6.4 添加GUI面板 288
第5章 Pandas-方便的數據分析庫 291
5.1 Pandas中的數據對象 291
5.1.1 Series對象 291
5.1.2 DataFrame對象 293
5.1.3 Index對象 297
5.1.4 MultiIndex對象 298
5.1.5 常用的函數參數 300
5.1.6 DataFrame的內部結構 301
5.2 下標存取 303
5.2.1 []操作符 304
5.2.2 .loc[]和.iloc[]存取器 304
5.2.3 獲取單個值 306
5.2.4 多級標簽的存取 306
5.2.5 query()方法 307
5.3 文件的輸入輸出 307
5.3.1 CSV文件 308
5.3.2 HDF5文件 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.1 groupby()方法 339
5.6.2 GroupBy對象 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.1 lambdify 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.1 Traits類型入門 393
7.1.1 什么是Traits屬性 393
7.1.2 Trait屬性的功能 396
7.1.3 Trait類型對象 399
7.1.4 Trait的元數據 401
7.2 Trait類型 403
7.2.1 預定義的Trait類型 403
7.2.2 Property屬性 406
7.2.3 Trait屬性監聽 408
7.2.4 Event和Button屬性 411
7.2.5 動態添加Trait屬性 412
7.3 TraitsUI入門 413
7.3.1 默認界面 414
7.3.2 用View定義界面 415
7.4 用Handler控制界面和模型 425
7.4.1 用Handler處理事件 426
7.4.2 Controller和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.1 VTK的流水線(Pipeline) 452
8.1.1 顯示圓錐 452
8.1.2 用ivtk觀察流水線 455
8.2 數據集 461
8.2.1 ImageData 461
8.2.2 RectilinearGrid 466
8.2.3 StructuredGrid 467
8.2.4 PolyData 470
8.3 TVTK的改進 473
8.3.1 TVTK的基本用法 474
8.3.2 Trait屬性 475
8.3.3 序列化 476
8.3.4 集合迭代 476
8.3.5 數組操作 477
8.4 TVTK可視化實例 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.2 Mayavi的流水線 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.1 TVTK場景的
Python科學計算環境的安裝與簡介
1.1 Python簡介
Python是一種解釋型、面向對象、動態的高級程序設計語言。自從20世紀90年代初Python語言誕生至今,它逐漸被廣泛應用于處理系統管理任務和開發Web系統。目前Python已經成為受歡迎的程序設計語言之一。
由于Python語言的簡潔、易讀以及可擴展性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經采用Python教授程序設計課程。眾多開源的科學計算軟件包都提供了Python的調用接口,例如計算機視覺庫OpenCV、三維可視化庫VTK、復雜網絡分析庫igraph等。而Python專用的科學計算擴展庫就更多了,例如三個十分經典的科學計算擴展庫:NumPy、SciPy和matplotlib,它們分別為Python提供了快速數組處理、數值運算以及繪圖功能。因此Python語言及其眾多的擴展庫所構成的開發環境十分適合工程技術、科研人員處理實驗數據、制作圖表,甚至開發科學計算應用程序。近年隨著數據分析擴展庫Pandas、機器學習擴展庫scikit-learn以及IPython Notebook交互環境的日益成熟,Python也逐漸成為數據分析領域的工具。
說起科學計算,首先會被提到的可能是MATLAB。然而除了MATLAB的一些專業性很強的工具箱目前還無法替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相應的擴展庫。和MATLAB相比,用Python做科學計算有如下優點:
● 首先,MATLAB是一款商用軟件,并且價格不菲。而Python免費,眾多開源的科學計算庫都提供了Python的調用接口。用戶可以在任何計算機上免費安裝Python及其絕大多數擴展庫。
● 其次,與MATLAB相比,Python是一門更易學、更嚴謹的程序設計語言。它能讓用戶編寫出更易讀、更易維護的代碼。
● ,MATLAB主要專注于工程和科學計算。然而即使在計算領域,也經常會遇到文件管理、界面設計、網絡通信等各種需求。而Python有著豐富的擴展庫,可以輕易完成各種高級任務,開發者可以用Python實現完整應用程序所需的各種功能。
1.1.1 Python2還是Python3 自從2008年以來,Python3經歷了5個小版本的更迭,無論是語法還是標準庫都發展得十分成熟。許多重要的擴展庫也已經逐漸同時支持Python2和Python3。但是由于Python3不向下兼容,目前大多數開發者仍然在生產環境中使用Python2.7。在PyCon2014大會上,Python之父宣布Python 2.7的官方支持延長至2020年。因此本書仍然使用Python 2.7作為開發環境。 Python科學計算環境的安裝與簡介
1.1 Python簡介 Python是一種解釋型、面向對象、動態的高級程序設計語言。自從20世紀90年代初Python語言誕生至今,它逐漸被廣泛應用于處理系統管理任務和開發Web系統。目前Python已經成為受歡迎的程序設計語言之一。
由于Python語言的簡潔、易讀以及可擴展性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經采用Python教授程序設計課程。眾多開源的科學計算軟件包都提供了Python的調用接口,例如計算機視覺庫OpenCV、三維可視化庫VTK、復雜網絡分析庫igraph等。而Python專用的科學計算擴展庫就更多了,例如三個十分經典的科學計算擴展庫:NumPy、SciPy和matplotlib,它們分別為Python提供了快速數組處理、數值運算以及繪圖功能。因此Python語言及其眾多的擴展庫所構成的開發環境十分適合工程技術、科研人員處理實驗數據、制作圖表,甚至開發科學計算應用程序。近年隨著數據分析擴展庫Pandas、機器學習擴展庫scikit-learn以及IPython Notebook交互環境的日益成熟,Python也逐漸成為數據分析領域的工具。
說起科學計算,首先會被提到的可能是MATLAB。然而除了MATLAB的一些專業性很強的工具箱目前還無法替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相應的擴展庫。和MATLAB相比,用Python做科學計算有如下優點:
● 首先,MATLAB是一款商用軟件,并且價格不菲。而Python免費,眾多開源的科學計算庫都提供了Python的調用接口。用戶可以在任何計算機上免費安裝Python及其絕大多數擴展庫。
● 其次,與MATLAB相比,Python是一門更易學、更嚴謹的程序設計語言。它能讓用戶編寫出更易讀、更易維護的代碼。
● ,MATLAB主要專注于工程和科學計算。然而即使在計算領域,也經常會遇到文件管理、界面設計、網絡通信等各種需求。而Python有著豐富的擴展庫,可以輕易完成各種高級任務,開發者可以用Python實現完整應用程序所需的各種功能。
1.1.1 Python2還是Python3 自從2008年以來,Python3經歷了5個小版本的更迭,無論是語法還是標準庫都發展得十分成熟。許多重要的擴展庫也已經逐漸同時支持Python2和Python3。但是由于Python3不向下兼容,目前大多數開發者仍然在生產環境中使用Python 2.7。在PyCon2014大會上,Python之父宣布Python 2.7的官方支持延長至2020年。因此本書仍然使用Python 2.7作為開發環境。
在本書涉及的擴展庫中,IPython、NumPy、SciPy、matplotlib、Pandas、SymPy、Cython、Spyder和OpenCV等都已經支持Python 3,而Traits、TraitsUI、TVTK、Mayavi等擴展庫則尚未著手Python 3的移植。雖然一些新興的三維可視化擴展庫正朝著替代Mayavi的方向努力,但目前Python環境中尚未有能替代VTK和Mayavi的專業級別的三維可視化擴展庫,因此本書仍保留第1版中相關的章節。
1.1.2 開發環境 和MATLAB等商用軟件不同,Python的眾多擴展庫由許多社區分別維護和,因此要一一將其收集齊全并安裝到計算機中是一件十分耗費時間和精力的事情。本節介紹兩個科學計算用的Python集成軟件包。讀者只需要下載并執行一個安裝程序,就能安裝好本書涉及的所有擴展庫。
書是更新過的第二版,還不錯,就是用的封面屬于比較容易磨損的那種。
這本書非常難得,作者真是python編程應用的高手,非常非常不錯的一本書。
很好。性價比非常高。
買科技類的書一定到當當
還可以,正版,送貨快。
好書,值的學習,快遞小哥也給力!
質量還不錯
送貨快,正版書
還不錯..
物流很慢,包裝袋損壞。書都沒塑料包裝,邊角有損壞。
挺不錯的書
不知是不是作者語文不太好,總之,書中一些文字實在有些不好理解……更像是生硬的英文翻中文,而不是中國人寫的地道的中文。
非常棒的一本書,值得推薦,這本書很好
書當然是好的,但是書的內容十分空洞,怎么講了,感覺就像老師上課照著PPT念,所以還是買本國外的書吧,而且這本書并不厚,700面,和宣傳圖看起的1000+的厚度很有差距。
非常好的書,做活動時買的,很實用!
包裝結實,講解細致,值得推薦。
書很好!!
包裝完好,物流很快!
這書都感覺像盜版的,而且當當的書質量越來越差,快遞送過來完全就變形了,就不能包裝一下嗎?
書的內容很全,看起來是正版
基礎起步,好用
當當越來越差,這么貴的書,買回來居然書角是破的,真無語,不過這次快遞挺快的,2天就到了!
內容很全,但是圖片是灰度圖,很多地方沒有彩圖影響閱讀了。
書挺厚的,紙質一般,內容不錯,講解得很詳細,還配有光盤,可惜封面沒有勒口,太薄了,與書不匹配。
很厚的一本書,內容得好好消化消化,還得先搞本基礎的看看再說
一評論就說接口調用出錯,傻乎乎的app,紙質現在都好爛的說,特別pc類書籍,臭乎乎的
比第一版內容詳實很多, 作者提供了很多科學計算工具的使用技巧, 這些很難在文檔中看到
很好的書,科學計算寫得很全面,可以隨時查一查。
研究生用Python做科學計算的必備書籍
給同事買的,第一版口碑很好,第二版大家強力推薦,光盤中作者自己做的winpython,兼容仿真用的各種常用插件,方便易用,pthhon大熱,這本不容錯過