图灵社区会员 tianyuannd_sina_com 专享 尊重版权 (cid:3524)(cid:2561)(cid:4551)(cid:3686)(cid:2381)(cid:3585) 图灵社区的电子书没有采用专有客 户端,您可以在任意设备上,用自 己喜欢的浏览器和PDF阅读器进行 阅读。 但您购买的电子书仅供您个人使用, 未经授权,不得进行传播。 我们愿意相信读者具有这样的良知 和觉悟,与我们共同保护知识产权。 如果购买者有侵权行为,我们可能 对该用户实施包括但不限于关闭该 帐号等维权措施,并可能追究法律 责任。 图灵社区会员 tianyuannd_sina_com 专享 尊重版权 图灵社区会员 tianyuannd_sina_com 专享 尊重版权 图灵社区会员 tianyuannd_sina_com 专享 尊重版权 内 容 提 要 Python因为其自身的诸多优点而成为科学计算的极佳选择。本书是将Python用于科学计算的实用指南, 既介绍了相关的基础知识,又提供了丰富的精彩案例,并为读者总结了最佳实践经验。其主要内容包括: 科学计算的基本概念与选择Python的理由,科学工作流和科学计算的结构,科学项目相关数据的各个方面, 用于科学计算的API和工具包,如何利用Python的NumPy和SciPy包完成数值计算,用Python做符号计算, 数据分析与可视化,并行与大规模计算,等等。 本书适合对科学计算感兴趣的Python程序员阅读参考。 ◆ 著 [印] Hemant Kumar Mehta 译 陶俊杰 陈小莉 责任编辑 朱 巍 执行编辑 贺子娟 李 敏 责任印制 彭志环 ◆ 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 [email protected] 网址 http://www.ptpress.com.cn 北京 印刷 ◆ 开本:800×1000 1/16 印张:13.5 字数:319千字 2017年 1 月第 1 版 印数:1 — 4 000册 2017年 1 月北京第 1 次印刷 著作权合同登记号 图字:01-2016-6691号 定价:49.00元 读者服务热线:(010)51095186转600 印装质量热线:(010)81055316 反盗版热线:(010)81055315 广告经营许可证:京东工商广字第 8052 号 图灵社区会员 tianyuannd_sina_com 专享 尊重版权 前 言 1 1 2 版权声明 3 Copyright © 2015 Packt Publishing. First published in the English language under the title Mastering Python Scientific Computing. 4 Simplified Chinese-language edition copyright © 2017 by Posts & Telecom Press. All rights reserved. 5 本书中文简体字版由Packt Publishing授权人民邮电出版社独家出版。未经出版者书面许可, 不得以任何方式复制或抄袭本书内容。 版权所有,侵权必究。 6 7 8 9 10 11 12 13 图灵社区会员 tianyuannd_sina_com 专享 尊重版权 2 前 言 谨以此书献给我的父母,以及我的精神导师——Manohar Chandwani教授(已故) 和Priyesh Kanungo教授。 图灵社区会员 tianyuannd_sina_com 专享 尊重版权 前 言 1 1 2 译 者 序 3 数据是事实的抽象形式,能比较则可量化。只要定义了事实的起点(几何中称为原点,代数 中称为数字0),一切模棱两可的表象通过对比都将变得井然有序。然而,有时人们关心的事实是 4 复杂的、多维的、难以想象的,因此需要分析数据、梳理信息、积累知识、作出决策。随着数据 获取和计算成本的不断降低,开源免费的数据采集与分析工具愈加便利,人们将更愿意接受采集 5 数据与分析数据的过程,用数据提高工作效率,改善生活质量。各门学科中不问数据的“差不多 先生”将被淘汰,以数据为基础的“德先生”与“赛先生”将重回中国。科学是反复的实验,民 主是具体的实践,二者都离不开数据的支持。科学与工程领域的各门学科都是建立在数据的基础 6 上,用数据发现问题、解决问题、展现研究成果,是科学家与工程师认识世界、改造世界的必然 手段。科学家与工程师在解决专业领域的计算任务时,需要建立数据模型、分析历史数据、预测 未来趋势,这些都离不开专业的科学计算工具。Python简洁优雅、开源免费、模块丰富、社区活 7 跃,是许多科学家与工程师解决复杂计算问题的必备工具,而以NumPy和SciPy为基础构建的 Python科学计算环境,在科学与工程领域已经有着十分广泛的应用。 8 对于科学计算难题,Python总能立竿见影。本书作者在科学计算领域经验十分丰富,知识框 架完整,见解独到,可谓精通科学计算。作者在书中以科学计算生态系统的视角,不仅全面阐述 了Python科学计算环境的基础内容,还为你提供了Python科学计算的精彩案例,总结了科学计算 9 的最佳实践经验。作者首先以科学计算的概念和作业流程为切入点,总结科学计算的任务和难点, 进而结合Python的功能特性论述选择Python进行科学计算的理由,总结Python为科学计算提供的 工具与API。之后,作者以科学计算的对象——数据——为基础,介绍数据存储的不同文件格式, 10 以及为科学计算实验生成数据的常用随机数生成方法。然后,作者详细地介绍了Python科学计算 的生态环境,通过大量示例介绍NumPy、SciPy、SymPy、IPython、matplotlib和pandas等科学计 算模块的功能,以及这些模块在数据统计、符号计算、交互编程、数据可视化等领域的应用。在 11 大数据时代,Python科学计算不能忽视高性能计算的需求,因此作者用第8章的内容详细介绍了 Python关于并行与大数据计算的方法,包括IPython的并行计算框架、多进程与多线程、Hadoop 与PySpark分布式计算。 12 书中还有Python在科学与工程领域大量的科学计算案例。在中国L型新常态已成定局、工业 4.0方兴未艾之际,通过数据寻求成本与效率的均衡,挖掘潜在的用户需求,增强用户体验,都 13 显得更加重要。数据分析方法不再局限于课本与描述性统计,国家、企业、家庭甚至个人发展中 图灵社区会员 tianyuannd_sina_com 专享 尊重版权 2 译者序 的每一个合理决策都需要数据的支持。另外,本书最后一章总结了一些科学软件开发项目中设计、 实施、发布、数据安全、维护与客户支持以及Python语言编程等方面的最佳实践。为了方便读者 查询Python模块,作者在书中整理了不同学科中解决具体问题时常用的Python科学计算模块。 Python科学计算的模块非常丰富,读者在PyPI网站(https://pypi.python.org/pypi)上可以看到最新 发布的模块信息。全书示例程序使用Python 2.7,所有程序稍加调整(改print语句)或使用2to3 工具,即可在Python 3环境下运行。强烈推荐使用Anaconda科学计算软件,它集成了Python科学 计算的常见模块,有适用于Windows、Mac OS、Linux系统的不同版本。BTW,在中国内地的普 通网络环境下,建议使用清华大学的TUNA镜像下载Anaconda安装包(https://mirrors.tuna.tsinghua. edu.cn/anaconda/archive/)。Python模块的下载和配置方式请参考https://mirror.tuna.tsinghua.edu.cn/ help/anaconda/,其配置方法十分简单。运行以下命令即可添加Anaconda Python免费仓库: conda config --add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/' conda config --set show_channel_urls yes 对于那些Anaconda官方未添加的模块,使用pip安装即可。网络环境好的同学,也可以考虑 conda-forge。更多精彩,等你探索。另外,Anaconda Cloud、Wakari(已经被Anaconda收购)、微 软Azure notebook等云计算环境都安装了常用的科学计算模块,可以灵活配置,免费使用,很适 合上手,只要有浏览器就都可以写代码。Python与PyData社区十分活跃,推荐感兴趣的读者持续 关注。 科学与工程学科众多,知识浩如烟海,内容非常专业。本书中涉及数学、物理、医学等诸多 方面的专业知识,对纯工科出身的我们来说颇有难度,相关知识我们重点参考了维基百科。若读 者在阅读过程中发现有翻译不当的地方,还请帮忙指正,非常感谢。 陶俊杰 陈小莉 2016年7月 图灵社区会员 tianyuannd_sina_com 专享 尊重版权 前 言 1 1 2 前 言 3 “我坚信几十年后,科学历史学家会把我们目前所处的时代,描述成科学 4 史上一个具有深远和重大意义的转型期。在这个过程中,不断涌现的免费开源 软件扮演了重要角色。” ——Fernando Perez,IPython创始人 5 本书主要介绍Python用于科学计算的API和工具包。我强烈推荐给奋战在工程计算和科学计 算领域的朋友们。科学计算是一个交叉领域,需要计算机科学、数学、自然科学(至少是物理学、 6 化学、环境科学、生物学等学科中的一种)以及工程学的知识。Python包含大量的包、API和工 具,为众多科学与工程领域提供所需的功能。 7 用户众多的社区、丰富齐全的帮助文档、大量的科学计算库和开发环境、高效的性能以及良 好的支持,使得Python成为科学计算的极佳选择。 8 本书内容 第1章,科学计算概况与选择Python的理由,主要介绍科学计算的基本概念,同时介绍Python 9 的背景知识、指导原则以及为何用Python进行科学计算是十分高效的。 第2章,科学工作流和科学计算的结构,主要介绍通常在解决科学问题时需要用到的数学与 10 数值分析概念,还会简单地介绍Python语言为科学计算提供的包、工具和API。 第3章,有效地制造与管理科学数据,主要介绍科学项目相关数据的各个方面,包括基本 概念、各种数据操作以及存储数据的格式与软件,还会介绍一些标准数据集和生成合成数据的 11 技术。 第4章,Python科学计算API,主要介绍不同科学计算API和工具(包括NumPy、SciPy和SymPy 12 等)的基本概念、特性以及简单的示例程序,还会简单地介绍使用IPython、matplotlib和pandas 进行交互式计算、数据分析以及数据可视化。 第5章,数值计算,主要介绍如何利用Python的NumPy和SciPy包完成数值计算。一开始先介 13 图灵社区会员 tianyuannd_sina_com 专享 尊重版权