新書推薦:
《
易经今解:释疑·解惑·见微
》
售價:HK$
90.9
《
东欧史(全二册)-“中间地带”的困境
》
售價:HK$
227.7
《
虚拟资本:金融怎样挪用我们的未来
》
售價:HK$
79.4
《
刻意练习不生气
》
售價:HK$
40.3
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:HK$
112.7
《
安全感是内心长出的盔甲
》
售價:HK$
68.8
《
快人一步:系统性能提高之道
》
售價:HK$
113.9
《
我们为什么会做梦:让梦不再神秘的新科学
》
售價:HK$
79.4
|
編輯推薦: |
许多物理学家在研究工作中还要扮演软件开发人员的角色。但即使对于物理学家来说,也不是所有的软件开发任务都很简单。本书是一本实践指南,介绍了软件开发的许多基本技能,能够帮助读者自动化地完成物理领域几乎所有方面的研究。 本书由两位核工程博士编写,书中包含了物理领域的许多实际案例。通过阅读本书,读者会学到如何用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.1Shell概览3
1.1.1Shell是 一 款编程
语言4
1.1.2路径和pwd5
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 ?Cl)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运行Python40
2.2注释41
2.3变量42
2.4特殊变量44
2.4.1布尔值44
2.4.2None不是0!45
2.4.3NotImplemented
不是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.1if-else语句78
4.1.2if-elif-else语句79
4.1.3if-else表达式80
4.2异常80
4.2.1抛出异常81
4.3循环83
4.3.1while循环83
4.3.2for循环85
4.3.3解析式87
4.4本章小结90
第5章使用函数91
5.1Python中的函数91
5.2关键字参数94
5.3变长参数96
5.4多返回值98
5.5作用域99
5.6递归102
5.7lambda103
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.1NumPy146
7.2.2PyTables147
7.2.3Pandas147
7.2.4Blaze148
7.3清理和改写数据149
7.4分析153
7.4.1模型驱动的分析154
7.4.2数据驱动的分析155
7.5可视化156
7.5.1可视化工具157
7.5.2gnuplot158
7.5.3matplotlib160
7.5.4Bokeh165
7.5.5Inkscape167
7.6本章小结167
第8章正则表达式169
8.1示例:杂乱的磁性170
8.2命令行中的元字符171
8.2.1用简单的模式
列出文件172
8.2.2根据模式全局查找
文件名(find)173
8.3grep、sed、awk179
8.4在文件中查找模式
(grep)179
8.5在文件中查找和替换
(sed)181
8.5.1查找和替换复杂
模式183
8.5.2sed额外内容184
8.6处理数据列(awk)186
8.7Python正则表达式188
8.8本章小结190
第9章NumPy:以数组的形式
思考192
9.1数组193
9.2dtype195
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章数据存储:文件和
HDF5216
10.1Python中的文件217
10.2关于计算机架构的一些说明221
10.3HDF5中的重要思想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.10HDF5工具237
10.11本章小结239
第 11章物理中重要的数据
结构240
11.1散列表240
11.1.1调整大小242
11.1.2冲突243
11.2数据框245
11.2.1Series246
11.2.2DataFrame结构247
11.3B数250
11.4k-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.7MPI276
12.8本章小结281
第 13章软件部署283
13.1部署软件本身284
13.1.1pip285
13.1.2Conda289
13.1.3虚拟机292
13.1.4Docker293
13.2部署到云端297
13.3在超算上部署299
13.4本章小结300
第3部分完善
第 14章构建流程和软件305
14.1make306
14.1.1运行make308
14.1.2makefile308
14.1.3目标309
14.1.4特殊目标311
14.2构建和运行软件312
14.2.1Makefile配置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.2Git起步320
15.2.1安装Git321
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 commit326
15.3.5git 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.8Pull等于Fetch加Merge
git pull345
16.9冲突346
16.10解决冲突347
16.11本章小结348
第 17章调试350
17.1遇到一个bug351
17.2print语句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.6linting365
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.3readme文件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.1LaTeX406
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.6GNU General Public
License GPL436
22.7知识共享(CC)437
22.8其他许可证438
22.9更换许可证440
22.10版权不是一切441
22.11本章小结442
第 23章关于计算物理进一步
思考443
术语447
|
|