Python 3.0 科學計算指南 (Scientific Computing with Python 3)

[瑞典]克勞斯·福勒簡· 埃里克·索利姆奧利維爾·維迪爾

買這商品的人也買了...

商品描述

本書旨在通過實際的Python 3.0代碼示例展示Python與數學應用程序的緊密聯系,介紹將Python中的各種概念用於科學計算的方法。
本書共有15章。第1~3章介紹Python中的主要語法元素、基本數據類型、容器類型等概念;第4~9章介紹線性代數、數組、函數、類、迭代等與數學數據類型緊密相關的內容;第10~14章就有關科學計算程序運行過程中錯誤處理、輸入輸出、測試等問題進行探索,並具體給出了一些綜合實例,以幫助讀者進一步掌握前述章節所涵蓋的內容;第15章介紹符號計算的相關內容,旨在讓讀者瞭解這一常用於推導和驗證理論上的數學模型和數值結果的技術。
本書特色鮮明,示例生動有趣,內容易讀易學,既適合Python初學者和程序員閱讀,也適合高校電腦專業的教師和學生參考。具有編程經驗以及科學計算的愛好者也可以將本書作為研究SciPy和NumPy的參考資料。

作者簡介

作者:[瑞典]克勞斯·福勒(Claus Führer)簡·埃里克·索利姆(Jan Erik Solem)奧利維爾·維迪爾(Olivier Verdier)譯者:王威


Claus Führer是瑞典隆德大學科學計算系的教授。他曾在許多國家和教學機構任教,擁有十分豐富的課堂教學經驗,所教授的課程涉及各級數值分析和工程數學的密集程序設計。在與工業界的研究he作中,Claus還開發出了數值分析軟件,並因此榮獲了2016年度隆德大學工程學院教師獎。


Jan Eric Solem是Python的狂熱愛好者。他曾任瑞典隆德大學的副教授,目前是Mapillary公司(一家街景計算機視覺公司)的CEO。他曾是Polar Rose公司的創始人兼CTO,並擔任人臉識別專家,還擔任過蘋果公司計算機視覺團隊的負責人。Jan是世界經濟論壇的技術先驅之一,曾憑藉圖像分析和模式識別的論文榮獲2005—2006年度北美論文獎。他也是《Programming Computer Vision with Python》一書的作者。


Olivier Verdier於2009年獲得了瑞典隆德大學的數學博士學位。他也是德國科隆大學、挪威特隆赫姆大學、挪威卑爾根大學和瑞典烏梅奧大學的博士後。Oliview Verdier早在2007年就開始用Python進行科學計算,目前是挪威卑爾根大學數學系的副教授。

目錄大綱

第1章入門1 
1.1安裝和配置說明1 
1.1.1安裝1 
1.1.2 Anaconda 2 
1.1.3配置3 
1.1.4 Python Shell 3 
1.1.5執行腳本3 
1.1.6獲取幫助4 
1.1.7 Jupyter – Python筆記本4 
1.2程序與控制流4 
1.2.1註釋5 
1.2.2行連接5 
1.3基本類型6 
1.3.1數值類型6 
1.3.2字符串6 
1.3.3變量7 
1.3.4列表7 
1.3.5列表運算符8 
1.3.6布爾表達式8 
1.4使用循環來重複語句9 
1.4.1重複任務9 
1.4.2 break和else 9 
1.5條件語句10 
1.6使用函數封裝代碼10 
1.7腳本和模塊11 
1.7.1簡單的模塊—函數的
集合12 
1.7.2使用模塊和命名空間13 
1.8解釋器13 
1.9小結14 
第2章變量和基本數據類型15
2.1變量15 
2.2數值類型16 
2.2.1整數類型17 
2.2.2浮點數17 
2.2.3複數20 
2.3布爾類型23 
2.3.1布爾運算符23 
2.3.2布爾類型轉換24 
2.3.3布爾類型自動轉換24 
2.3.4 and和or的返回值25 
2.3.5布爾值和整數26 
2.4字符串類型26 
2.5小結29 
2.6練習30 
第3章容器類型33 
3.1列表33 
3.1.1切片34 
3.1.2步長36 
3.1 .3列表修改36 
3.1.4是否屬於列表37 
3.1.5列表方法37 
3.1.6原位操作38 
3.1.7列表合併—zip 39 
3.1.8列表推導39 
3.2數組40 
3.3元組41 
3.4字典42 
3.4 .1創建和修改字典42 
3.4.2循環遍歷字典43 
3.5集合44 
3.6容器類型轉換45 
3.7類型檢查46 
3.8小結47 
3.9練習47
第4章線性代數—數組50 
4.1數組類型概要50 
4.1.1向量和矩陣50 
4.1.2索引和切片52 
4.1.3線性代數運算52 
4.2數學基礎53 
4.2.1作為函數的數組54 
4.2.2基於元素的運算54 
4.2.3形狀和維數54 
4.2.4點運算55 
4.3數組類型57 
4.3.1數組屬性57 
4.3.2用列表創建數組57 
4.4訪問數組項59 
4.4.1基本數組切片59 
4.4. 2使用切片修改數組61 
4.5數組構造函數61 
4.6訪問和修改形狀62 
4.6.1 shape函數62 
4.6.2維數63 
4.6.3重塑63 
4.7疊加65 
4.8作用於數組的函數66 
4.8.1通用函數66 
4.8.2數組函數68 
4.9 SciPy中的線性代數方法69 
4.9.1使用LU來求解多個線性
方程組70 
4.9.2使用SVD來解決最小二乘
問題71 
4.9.3其他方法72 
4.10小結72
4.11練習73 
第5章高級數組75 
5.1數組視圖和副本75 
5.1.1數組視圖75 
5.1.2切片視圖76 
5.1.3轉置和重塑視圖76 
5.1.4複製數組76 
5.2數組比較77 
5.2.1布爾數組77 
5.2.2數組布爾運算78 
5.3數組索引79 
5.3.1使用布爾數組進行索引79 
5.3.2使用where命令80 
5.4代碼性能和向量化81 
5.5廣播83 
5.5.1數學視角83 
5.5.2廣播數組86 
5.5.3典型示例88 
5.6稀疏矩陣90 
5.6.1稀疏矩陣格式91 
5.6.2生成稀疏矩陣94 
5.6.3稀疏矩陣方法94 
5.7小結95 
第6章繪圖96 
6.1基本繪圖96 
6.2格式化100 
6.3 meshgrid和contours函數103 
6.4圖像和等值線106 
6.5 matplotlib對象108 
6.5.1坐標軸對象108 
6.5.2修改線條屬性109 
6.5.3註釋110
6.5.4曲線間的填充面積111 
6.5.5刻度和刻度標籤112 
6.6繪製三維圖113 
6.7用繪圖製作電影116 
6.8小結117 
6.9練習117 
第7章函數120 
7.1基本原理120 
7.2形參和實參121 
7.2.1參數傳遞—通過位置和
關鍵字121 
7.2.2更改實參122 
7.2.3訪問本地命名空間之外
定義的變量122 
7.2.4默認參數123 
7.2.5可變參數124 
7.3返回值125 
7.4遞歸函數126 
7.5函數文檔128 
7.6函數是對象128 
7.7匿名函數—lambda 
關鍵字130 
7.8裝飾器131 
7.9小結132 
7.10練習133 
第8章類135 
8.1類的簡介136 
8.1.1類語法136 
8.1.2 _ _init_ _方法137 
8.2屬性和方法138 
8.2.1特殊方法139 
8.2.2彼此依賴的屬性143 
8.2.3綁定和未綁定方法145
8.2.4類屬性146 
8.2.5類方法146 
8.3子類和繼承148 
8.4封裝151 
8.5裝飾器類152 
8.6小結154 
8.7練習154 
第9章迭代156 
9.1 for語句156 
9.2控制循環內流程157 
9.3迭代器158 
9.3.1生成器159 
9.3.2迭代器是一次性的159 
9.3.3迭代器工具160 
9.3.4遞歸序列的生成器161 
9.4加速收斂163 
9.5列表填充模式165 
9.5.1使用append方法來填充
列表165 
9.5.2迭代器中的列表166 
9.5.3存儲生成的值166 
9.6將迭代器作為列表使用167 
9.6.1生成器表達式167 
9.6.2壓縮迭代器168 
9.7迭代器對象169 
9.8無限迭代170 
9.8.1 while循環170 
9.8.2遞歸171 
9.9小結171 
9.10練習172 
第10章異常處理175 
10.1什麼是異常175
10.1.1基本原理177 
10.1.2用戶定義異常179 
10.1.3上下文管理器— 
with語句180 
10.2查找錯誤:調試181 
10.2.1漏洞182 
10.2.2堆棧182 
10.2.3 Python調試器183 
10.2.4調試命令185 
10.2.5 IPython調試186 
10.3小結187 
第11章命名空間、範圍和模塊188 
11.1命名空間188 
11.2變量範圍189 
11.3模塊191 
11.3.1簡介191 
11.3.2 IPython模塊192 
11.3.3變量_ _name_ _ 193 
11.3.4一些有用的模塊193 
11.4小結194 
第12章輸入和輸出195 
12.1文件處理195 
12.1.1文件交互195 
12.1.2文件是可迭代的196 
12.1.3文件模式197 
12.2 NumPy方法198 
12.2. 1 savetxt 198 
12.2.2 loadtxt 198 
12.3 Pickling 199 
12.4 Shelves 200
12.5讀寫Matlab數據文件200 
12.6讀寫圖像201 
12.7小結202 
第13章測試203 
13.1手動測試203 
13.2自動測試204 
13.3使用unittest包206 
13.4參數化測試209 
13.5斷言工具210 
13.6浮點值比較210 
13.7單元和功能測試212 
13.8調試213 
13.9測試發現213 
13.10測量執行時間213 
13.10.1用魔法函數計時214 
13.10.2使用Python的timeit 
計時模塊215 
13.10.3用上下文管理器
計時216 
13.11小結217 
13.12練習217 
第14章綜合示例219 
14.1多項式219 
14.1.1理論背景219 
14.1.2任務220 
14.2多項式類221 
14.3牛頓多項式225 
14.4譜聚類算法226 
14.5解決初始值問題230 
14.6小結233 
14.7練習233
第15章符號計算—SymPy 235 
15.1什麼是符號計算235 
15.2 SymPy的基本元素238 
15.2.1符號—所有公式的
基礎238 
15.2.2數字239 
15.2.3函數239 
15.3基本函數241 
15.4符號線性代數243 
15.5 SymPy線性代數方法示例245 
15.6替換246 
15.7評估符號表達式249 
15.8符號表達式轉化為數值
函數250 
15.9小結252 
參考文獻253