産品特色
編輯推薦
許多物理學傢在研究工作中還要扮演軟件開發人員的角色。但即使對於物理學傢來說,也不是所有的軟件開發任務都很簡單。本書是一本實踐指南,介紹瞭軟件開發的許多基本技能,能夠幫助讀者自動化地完成物理領域幾乎所有方麵的研究。
本書由兩位核工程博士編寫,書中包含瞭物理領域的許多實際案例。通過閱讀本書,讀者會學到如何用Python編程語言收集、分析數據,構建軟件,發布結果等技能。
本書分為4個部分。
起步:掌握Python、命令行、數據容器、函數、流程控製以及邏輯、類和對象。
上手:學習正則錶達式、分析和可視化、NumPy、用文件和HDF5存儲數據、物理中重要的數據結構、並行計算以及部署軟件。
完善:構建流程和軟件;使用本地和遠程版本控製、調試並測試代碼。
發布:為代碼生成文檔;發布研究結果;提高協作效率;瞭解軟件許可證、所有權和版權的處理流程。
內容簡介
本書介紹瞭如何通過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 <
Python物理學高效計算 下載 mobi epub pdf txt 電子書 格式