译者序

数据是事实的抽象形式,能比较则可量化。只要定义了事实的起点(几何中称为原点,代数中称为数字0),一切模棱两可的表象通过对比都将变得井然有序。然而,有时人们关心的事实是复杂的、多维的、难以想象的,因此需要分析数据、梳理信息、积累知识、作出决策。随着数据获取和计算成本的不断降低,开源免费的数据采集与分析工具愈加便利,人们将更愿意接受采集数据与分析数据的过程,用数据提高工作效率,改善生活质量。各门学科中不问数据的“差不多先生”将被淘汰,以数据为基础的“德先生”与“赛先生”将重回中国。科学是反复的实验,民主是具体的实践,二者都离不开数据的支持。科学与工程领域的各门学科都是建立在数据的基础上,用数据发现问题、解决问题、展现研究成果,是科学家与工程师认识世界、改造世界的必然手段。科学家与工程师在解决专业领域的计算任务时,需要建立数据模型、分析历史数据、预测未来趋势,这些都离不开专业的科学计算工具。Python简洁优雅、开源免费、模块丰富、社区活跃,是许多科学家与工程师解决复杂计算问题的必备工具,而以NumPy和SciPy为基础构建的Python科学计算环境,在科学与工程领域已经有着十分广泛的应用。

对于科学计算难题,Python总能立竿见影。本书作者在科学计算领域经验十分丰富,知识框架完整,见解独到,可谓精通科学计算。作者在书中以科学计算生态系统的视角,不仅全面阐述了Python科学计算环境的基础内容,还为你提供了Python科学计算的精彩案例,总结了科学计算的最佳实践经验。作者首先以科学计算的概念和作业流程为切入点,总结科学计算的任务和难点,进而结合Python的功能特性论述选择Python进行科学计算的理由,总结Python为科学计算提供的工具与API。之后,作者以科学计算的对象——数据——为基础,介绍数据存储的不同文件格式,以及为科学计算实验生成数据的常用随机数生成方法。然后,作者详细地介绍了Python科学计算的生态环境,通过大量示例介绍NumPy、SciPy、SymPy、IPython、matplotlib和pandas等科学计算模块的功能,以及这些模块在数据统计、符号计算、交互编程、数据可视化等领域的应用。在大数据时代,Python科学计算不能忽视高性能计算的需求,因此作者用第8章的内容详细介绍了Python关于并行与大数据计算的方法,包括IPython的并行计算框架、多进程与多线程、Hadoop与PySpark分布式计算。

书中还有Python在科学与工程领域大量的科学计算案例。在中国L型新常态已成定局、工业4.0方兴未艾之际,通过数据寻求成本与效率的均衡,挖掘潜在的用户需求,增强用户体验,都显得更加重要。数据分析方法不再局限于课本与描述性统计,国家、企业、家庭甚至个人发展中的每一个合理决策都需要数据的支持。另外,本书最后一章总结了一些科学软件开发项目中设计、实施、发布、数据安全、维护与客户支持以及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免费仓库:

  1. conda config --add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'
  2. conda config --set show_channel_urls yes

对于那些Anaconda官方未添加的模块,使用pip安装即可。网络环境好的同学,也可以考虑conda-forge。更多精彩,等你探索。另外,Anaconda Cloud、Wakari(已经被Anaconda收购)、微软Azure notebook等云计算环境都安装了常用的科学计算模块,可以灵活配置,免费使用,很适合上手,只要有浏览器就都可以写代码。Python与PyData社区十分活跃,推荐感兴趣的读者持续关注。

科学与工程学科众多,知识浩如烟海,内容非常专业。本书中涉及数学、物理、医学等诸多方面的专业知识,对纯工科出身的我们来说颇有难度,相关知识我们重点参考了维基百科。若读者在阅读过程中发现有翻译不当的地方,还请帮忙指正,非常感谢。

陶俊杰 陈小莉

2016年7月