前言

“我坚信几十年后,科学历史学家会把我们目前所处的时代,描述成科学史上一个具有深远和重大意义的转型期。在这个过程中,不断涌现的免费开源软件扮演了重要角色。”

——Fernando Perez,IPython创始人

本书主要介绍Python用于科学计算的API和工具包。我强烈推荐给奋战在工程计算和科学计算领域的朋友们。科学计算是一个交叉领域,需要计算机科学、数学、自然科学(至少是物理学、化学、环境科学、生物学等学科中的一种)以及工程学的知识。Python包含大量的包、API和工具,为众多科学与工程领域提供所需的功能。

用户众多的社区、丰富齐全的帮助文档、大量的科学计算库和开发环境、高效的性能以及良好的支持,使得Python成为科学计算的极佳选择。

本书内容

第1章,科学计算概况与选择Python的理由,主要介绍科学计算的基本概念,同时介绍Python的背景知识、指导原则以及为何用Python进行科学计算是十分高效的。

第2章,科学工作流和科学计算的结构,主要介绍通常在解决科学问题时需要用到的数学与数值分析概念,还会简单地介绍Python语言为科学计算提供的包、工具和API。

第3章,有效地制造与管理科学数据,主要介绍科学项目相关数据的各个方面,包括基本概念、各种数据操作以及存储数据的格式与软件,还会介绍一些标准数据集和生成合成数据的技术。

第4章,Python科学计算API,主要介绍不同科学计算API和工具(包括NumPy、SciPy和SymPy等)的基本概念、特性以及简单的示例程序,还会简单地介绍使用IPython、matplotlib和pandas进行交互式计算、数据分析以及数据可视化。

第5章,数值计算,主要介绍如何利用Python的NumPy和SciPy包完成数值计算。一开始先介绍数值计算的基础知识,然后介绍优化、插值、傅里叶变换、信号处理、线性代数、统计、空间算法、图像处理、文件输入/输出等进阶知识。

第6章,用Python做符号计算,首先介绍CAS(Computerized Algebra System,计算机化代数系统)的基础知识,并用SymPy实现符号计算。这一章将围绕CAS介绍多个话题,既包括简单的数学表达式和基本的算术运算,也有数学和物理学的高级概念。

第7章,数据分析与可视化,介绍matplotlib和pandas在数据分析与可视化方面的相关概念和应用示例。

第8章,并行与大规模科学计算,介绍实现高性能科学计算的工具和方法,包括IPython(配合MPI)并行计算、使用StarCluster配置Amazon EC2计算集群、多进程与多线程方法、Hadoop和Spark。

第9章,真实案例介绍,介绍一些利用Python开发的科学计算应用、库和工具的案例。这些案例都源自不同的工程和科学领域。

第10章,科学计算的最佳实践,介绍科学计算的最佳实践,内容包括方案设计、代码编写、数据管理、应用部署、高性能计算、数据安全与隐私、应用维护以及客户支持等,同时还会介绍一些专门针对Python开发的最佳实践。

本书需要的工具

运行本书的示例程序首先需要一台装有Python 2.7.9或以上版本的计算机以及Python的一些API、包和工具。然后,需要一些Python库(包括NumPy、SciPy、SymPy、matplotlib、pandas和IPython),还有IPython.parallel包、pyzmq、SSH安全协议(如果你需要)以及Hadoop。

目标读者

本书面向希望了解科学计算的Python程序员。阅读本书的前提是你已经掌握了Python编程的基本概念。

排版约定

在本书里,你将会看到用于区分不同类型信息的文本样式。以下给出了一些文本样式的示例及其含义。

正文中的代码和用户输入会这样显示:“随机模块中的所有函数都是random.Random类的一个隐含实例的方法。”

代码块示例如下:

  1. import random
  2. print random.random()
  3. print random.uniform(1,9)
  4. print random.randrange(20)
  5. print random.randrange(0, 99, 3)
  6. print random.choice('ABCDEFGHIJKLMNOPQRSTUVWXYZ') # Output 'P'
  7. items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  8. random.shuffle(items)
  9. print items
  10. print random.sample([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5)
  11. weighted_choices = [('Three', 3), ('Two', 2), ('One', 1), ('Four', 4)]
  12. population = [val for val, cnt in weighted_choices for i in
  13. range(cnt)]
  14. print random.choice(population)

前言 - 图1 这个图标表示警告或重要事项。

前言 - 图2 这个图标表示提示和技巧。

读者反馈

我们非常欢迎读者的反馈。如果你对本书有些想法,有什么喜欢或是不喜欢的,请反馈给我们。这将有助于我们开发出能够充分满足读者需求的图书。

一般的反馈,请发送电子邮件至feedback@packtpub.com,并在邮件主题中注明书名。

如果你在某个领域有专长,并有意编写一本书或是贡献一份力量,请参考我们的作者指南,地址为http://www.packtpub.com/authors

客户支持

你现在已经是Packt引以为傲的读者了,为了能让你的购买物有所值,我们还为你准备了以下内容。

下载示例代码

你可以用你的账户从http://www.packtpub.com下载所有已购买Packt图书的示例代码文件。如果你从其他地方购买的本书,可以访问http://www.packtpub.com/support并注册,我们将通过电子邮件把文件发送给你。

下载本书的彩色图片

我们也提供了本书的PDF文件,里面包含了本书的截屏和图表等彩色图片。彩色图片将能帮助你更好地理解输出的变化。下载地址:https://www.packtpub.com/sites/default/files/downloads/8823OS.pdf

勘误

虽然我们已尽力确保本书内容正确,但出错仍旧在所难免。如果你在我们的书中发现错误,不管是文本还是代码,希望能告知我们,我们不胜感激。这样做,你可以使其他读者免受挫败,也可以帮助我们改进本书的后续版本。如果你发现任何错误,请访问http://www.packtpub.com/submit-errata提交,选择你的书,点击勘误表提交表单的链接,并输入详细说明。勘误一经核实,你的提交将被接受,此勘误将上传到本公司网站或添加到现有勘误表。

访问https://www.packtpub.com/books/content/support,在搜索框中输入书名,你也可以在Errata部分查看已经提交的勘误信息。

盗版

版权材料在互联网上的盗版是所有媒体都要面对的问题。Packt非常重视保护版权和许可证。如果你发现我们的作品在互联网上被非法复制,不管以什么形式,都请立即为我们提供位置地址或网站名称,以便我们可以寻求补救。

请把可疑盗版材料的链接发到copyright@packtpub.com。

非常感谢你帮助我们保护作者,以及保护我们给你带来有价值内容的能力。

问题

如果你对本书内容存有疑问,不管是哪个方面,都可以通过questions@packtpub.com联系我们。我们会尽最大努力解决。

电子书

扫描以下二维码,即可购买本书电子版。

{%}