《Python物理學高效計算》是2018年人民郵電出版社出版的圖書,作者是[美]安東尼·斯科普斯、凱瑟琳·赫夫。
基本介紹
- 中文名:Python物理學高效計算
- 作者:[美]安東尼·斯科普斯、凱瑟琳·赫夫
- 譯者:孫波翔
- 出版時間:2018年02月01日
- 出版社:人民郵電出版社
- 頁數:454 頁
- ISBN:9787115470782
- 定價:99 元
- 開本:16 開
- 裝幀:平裝
- 紙張:膠版紙
- 正文語種:中文
- 版次:1
內容簡介,作者簡介,目錄,
內容簡介
本書介紹了如何通過Python自動化地完成物理領域方面的研究。全書共分為4個部分,以Python代碼為示例向讀者介紹了如何用Python解決物理項目中出現的各種問題。第 1部分(第 1~6章):起步,介紹Python的基本知識,如命令行、數據容器、類和對象等。第 2部分(第7~13章):上手,主要介紹正則表達式、數據可視化、存儲數據等實用知識。第3部分(第 14~18章):完善,介紹如何構建流程和軟體、版本控制、調試和控制代碼等。第4部分(第 19~23章):發布,介紹如何為代碼生成文檔、如何提高協作效率和軟體許可證以及著作權的相關知識等。
本書適合想要通過Python減少工作量的物理學領域的研究人員閱讀,也適合想要學習如何通過Python編程解決物理問題的讀者參考。
作者簡介
Anthony Scopatz是計算物理學家和資 深Python開 發 者。Anthony擁有加州大學聖塔芭芭拉分校的理學學士學位,以及德克薩斯大學奧斯汀分校的機械/核能博士學位。Enthought前員工,曾在芝加哥大學天文物理學系的Flash Center進行博士後研究,目前是威斯康星大學麥迪遜分校工程物理系的工作人員,主要研究核燃料循環的基本物理建模、信息理論和熵。Anthony是Python軟體基金會的成員,並在許多會議上進行過以科學和軟體開發為主題的演講。
Kathryn D.Huff是伯克利數據科學研究所的研究員,也是加州大學伯克利分校核能科學與安全聯盟的博士後研究員。2013年獲得威斯康星大學麥迪遜分校的核工程博士學位。她還擁有芝加哥大學物理學學士學位。她參與了實驗宇宙天體物理學、實驗非平衡粒狀物相動力學、計算核燃料循環分析、計算反應堆事故中子學等領域的研究。在威斯康辛州,她是科學計算機組織Hacker Within的創始人,自2011年以來一直擔任Software Carpentry的講師。在專業的其他方面,她目前是美國核學會的部門主管,連續兩年擔任Scientific Computing with Python (SciPy)會議的程式委員會聯合主席。
目錄
第 一部分 起步
第 1章 命令行簡介 3
1.1 Shell概覽 3
1.1.1 Shell是 一 款編程
語言 4
1.1.2 路徑和pwd 5
1.1.3 主目錄(~) 7
1.1.4 列出內容(ls) 8
1.1.5 更改目錄(cd) 9
1.1.6 查看檔案內容(head和tail命令) 12
1.2 操作檔案和目錄 12
1.2.1 創建檔案(nano、emacs、vi、cat、>、touch) 12
1.2.2 複製和重命名檔案(cp和mv) 17
1.2.3 創建目錄(mkdir) 18
1.2.4 刪除檔案和目錄(rm) 19
1.2.5 標誌和通配符 21
1.3 獲取幫助 22
1.3.1 閱讀程式手冊(man) 22
1.3.2 找到正確的
工具(apropos) 24
1.3.3 用重定向和管道組合多個實用程式(>、>>、|) 25
1.4 許可權和共享 26
1.4.1 查看許可權(ls –l) 27
1.4.2 設定所有權 28
1.4.3 設定許可權
(chmod) 29
1.4.4 創建連結(ln) 29
1.4.5 連線其他計算機
(ssh和scp) 30
1.5 環境 31
1.5.1 保存環境變數
(.bashrc) 33
1.5.2 運行程式
(PATH) 34
1.5.3 別名命令
(alias) 35
1.6 使用bash編寫腳本 36
1.7 本章小結 38
第 2章 Python編程起步 39
2.1 運行Python 40
2.2 注釋 41
2.3 變數 42
2.4 特殊變數 44
2.4.1 布爾值 44
2.4.2 None不是0! 45
2.4.3 NotImplemented
不是None! 45
2.5 操作符 45
2.6 字元串 49
2.6.1 字元串索引 50
2.6.2 字元串連線 52
2.6.3 字元串字面值 53
2.6.4 字元串方法 55
2.7 模組 56
2.7.1 導入模組 56
2.7.2 從模組中導入
變數 57
2.7.3 別名導入 58
2.7.4 導入變數別名 58
2.7.5 包 59
2.7.6 標準庫和Python
生態系統 61
2.8 本章小結 62
第3章 基本容器 63
3.1 列表 64
3.2 元組 68
3.3 集合 69
3.4 字典 71
3.5 本章小結 73
第4章 流程控制和邏輯運算 75
4.1 條件語句 75
4.1.1 if-else語句 78
4.1.2 if-elif-else語句 79
4.1.3 if-else表達式 80
4.2 異常 80
4.2.1 拋出異常 81
4.3 循環 83
4.3.1 while循環 83
4.3.2 for循環 85
4.3.3 解析式 87
4.4 本章小結 90
第5章 使用函式 91
5.1 Python中的函式 91
5.2 關鍵字參數 94
5.3 變長參數 96
5.4 多返回值 98
5.5 作用域 99
5.6 遞歸 102
5.7 lambda 103
5.8 生成器 104
5.9 裝飾器 107
5.10 本章小結 110
第6章 類和對象 112
6.1 面向對象 112
6.2 對象 113
6.3 類 117
6.3.1 類變數 118
6.3.2 實例變數 120
6.3.3 構造器 121
6.3.4 方法 123
6.3.5 靜態方法 126
6.3.6 鴨子類型 127
6.3.7 多態 128
6.4 裝飾器和元類 132
6.5 本章小結 134
第 2部分 上手
第7章 分析和可視化 139
7.1 準備數據 139
7.1.1 實驗數據 143
7.1.2 模擬數據 144
7.1.3 元數據 145
7.2 載入數據 145
7.2.1 NumPy 146
7.2.2 PyTables 147
7.2.3 Pandas 147
7.2.4 Blaze 148
7.3 清理和改寫數據 149
7.4 分析 153
7.4.1 模型驅動的分析 154
7.4.2 數據驅動的分析 155
7.5 可視化 156
7.5.1 可視化工具 157
7.5.2 gnuplot 158
7.5.3 matplotlib 160
7.5.4 Bokeh 165
7.5.5 Inkscape 167
7.6 本章小結 167
第8章 正則表達式 169
8.1 示例:雜亂的磁性 170
8.2 命令行中的元字元 171
8.2.1 用簡單的模式
列出檔案 172
8.2.2 根據模式全局查找
檔案名稱(find) 173
8.3 grep、sed、awk 179
8.4 在檔案中查找模式
(grep) 179
8.5 在檔案中查找和替換
(sed) 181
8.5.1 查找和替換複雜
模式 183
8.5.2 sed額外內容 184
8.6 處理數據列(awk) 186
8.7 Python正則表達式 188
8.8 本章小結 190
第9章 NumPy:以數組的形式
思考 192
9.1 數組 193
9.2 dtype 195
9.3 切片和視圖 198
9.4 算術和廣播 200
9.5 花式索引 204
9.6 掩模 206
9.7 結構數組 209
9.8 通用函式 211
9.9 其他有用的函式 213
9.10 本章小結 215
第 10章 數據存儲:檔案和
HDF5 216
10.1 Python中的檔案 217
10.2 關於計算機架構的一些說明 221
10.3 HDF5中的重要思想 223
10.4 檔案處理 225
10.5 層次布局 227
10.6 分塊 229
10.7 核內和核外操作 233
10.7.1 核內 233
10.7.2 核外 234
10.8 查詢 235
10.9 壓縮 236
10.10 HDF5工具 237
10.11 本章小結 239
第 11章 物理中重要的數據
結構 240
11.1 散列表 240
11.1.1 調整大小 242
11.1.2 衝突 243
11.2 數據框 245
11.2.1 Series 246
11.2.2 DataFrame結構 247
11.3 B數 250
11.4 k-d樹 252
11.5 本章小結 256
第 12章 並行化執行 258
12.1 規模和擴展能力 259
12.2 問題分類 261
12.3 示例:N體問題 262
12.4 非並行 263
12.5 執行緒 267
12.6 多處理 273
12.7 MPI 276
12.8 本章小結 281
第 13章 軟體部署 283
13.1 部署軟體本身 284
13.1.1 pip 285
13.1.2 Conda 289
13.1.3 虛擬機 292
13.1.4 Docker 293
13.2 部署到雲端 297
13.3 在超算上部署 299
13.4 本章小結 300
第3部分 完善
第 14章 構建流程和軟體 305
14.1 make 306
14.1.1 運行make 308
14.1.2 makefile 308
14.1.3 目標 309
14.1.4 特殊目標 311
14.2 構建和運行軟體 312
14.2.1 Makefile配置 313
14.2.2 編譯 316
14.3 安裝 316
14.4 本章小結 317
第 15章 本地版本控制 318
15.1 什麼是版本控制 318
15.1.1 計算物理中的
實驗室筆記本 319
15.1.2 版本控制工具的
類型 320
15.2 Git起步 320
15.2.1 安裝Git 321
15.2.2 獲取幫助 321
15.2.3 控制Git的行為
(git config) 322
15.3 使用Git進行本地版本
控制 323
15.3.1 創建本地庫
(git init) 323
15.3.2 暫存檔案 325
15.3.3 檢查本地副本的狀態
(git status) 326
15.3.4 保存快照
(git commit) 326
15.3.5 git log:查看
歷史 329
15.3.6 查看改動
(git diff) 329
15.3.7 取消暫存或回滾檔案
(git reset) 330
15.3.8 丟棄提交
(git revert) 331
15.3.9 列出、創建、刪除分
支(git branch) 332
15.3.10 切換分支
(git checkout) 334
15.3.11 合併分支
(git merge) 334
15.3.12 處理衝突 336
15.4 本章小結 336
第 16章 遠程版本控制 337
16.1 代碼託管(github.com) 337
16.2 在GitHub上創建
代碼庫 339
16.3 聲明遠程庫
(git remote) 339
16.4 向遠程庫傳送提交
(git push) 340
16.5 下載代碼庫
(git clone) 341
16.6 從遠程庫獲取內容
(git fetch) 344
16.7 合併遠程庫的內容
(git merge) 345
16.8 Pull等於Fetch加Merge
(git pull) 345
16.9 衝突 346
16.10 解決衝突 347
16.11 本章小結 348
第 17章 調試 350
17.1 遇到一個bug 351
17.2 print語句 352
17.3 互動式調試 354
17.4 在Pythong中調試
(pdb) 355
17.4.1 設定跟蹤點 356
17.4.2 步進 357
17.4.3 查詢變數 358
17.4.4 設定狀態 358
17.4.5 運行函式和
方法 359
17.4.6 繼續執行 359
17.4.7 斷點 360
17.5 剖析 360
17.5.1 使用pstats查看
剖析檔案 361
17.5.2 可視化查看剖析
信息 361
17.5.3 使用Kernprof剖析
代碼 364
17.6 linting 365
17.7 本章小結 366
第 18章 測試 368
18.1 為什麼要做測試 369
18.2 什麼時候寫測試 369
18.3 在哪裡編寫測試 370
18.4 如何測試?測試哪些
內容 370
18.5 運行測試 373
18.6 邊界情形 374
18.7 單元測試 376
18.8 集成測試 378
18.9 回歸測試 380
18.10 測試生成器 380
18.11 測試覆蓋 382
18.12 測試驅動開發 383
18.13 本章小結 386
第4部分 發布
第 19章 文檔 389
19.1 為什麼文檔很重要 389
19.1.1 文檔非常有價值 390
19.1.2 編寫文檔比想像的
要簡單 390
19.2 文檔類型 391
19.2.1 理論手冊 391
19.2.2 用戶和開 發 者
指南 392
19.2.3 readme檔案 392
19.2.4 注釋 393
19.2.5 自文檔代碼 395
19.2.6 文檔字元串 396
19.3 自動化 397
19.4 本章小結 401
第 20章 出版 402
20.1 文檔處理 403
20.1.1 格式和內容
分離 403
20.1.2 跟蹤改動 404
20.2 文本編輯器 404
20.3 標記語言 405
20.3.1 LaTeX 406
20.3.2 參考文獻 416
20.4 本章小結 419
第 21章 協作 421
21.1 任務單系統 422
21.1.1 工作流程概覽 422
21.1.2 創建問題 424
21.1.3 分配問題 425
21.1.4 討論問題 426
21.1.5 關閉問題 427
21.2 拉取請求和代碼審查 427
21.2.1 提交拉取請求 428
21.2.2 審查合併請求 428
21.2.3 合併拉取請求 429
21.3 本章小結 429
第 22章 許可證、所有權和
著作權 430
22.1 哪些內容可賦予著作權 431
22.2 首 次發布權 431
22.3 什麼是公共領域 432
22.4 選擇一個軟體許可證 432
22.5 伯克利軟體發布
許可證(BSD) 434
22.6 GNU General Public
License (GPL) 436
22.7 知識共享(CC) 437
22.8 其他許可證 438
22.9 更換許可證 440
22.10 著作權不是一切 441
22.11 本章小結 442
第 23章 關於計算物理進一步
思考 443
術語 447