前 言
科学计算和数值计算是科研、工程和分析方面的新兴领域。过去几十年来,信息科技行业的革命为其从业者提供了新的强大工具。这让计算工作能够处理前所未有的大规模和复杂性问题,所以整个领域和行业的应用如雨后春笋般涌现。这种进步还在持续,随着硬件、软件和算法的不断改进,该领域也正在创造新的机会。虽然这种技术进步的终极推手是最近几十年以来出现的拥有强大计算能力的硬件,但是,对于计算从业人员来说,计算工作的软件环境与硬件一样重要,甚至更为重要。《Python科学计算和数据科学应用(第2版)》介绍目前很流行并且快速增长的数值计算环境:由Python编程语言及其很多库组成的数值计算生态系统。
计算是一种跨学科的工作,需要在理论和实践方面都有丰富的专业知识和经验:扎实的数学基础和科学思维是计算工作的基本要求。另外,计算机编程和计算机科学方面的训练也同样重要。《Python科学计算和数据科学应用(第2版)》的目的就是通过介绍使用Python编程语言及相关的计算环境进行科学计算来连接理论和实践。《Python科学计算和数据科学应用(第2版)》假设读者已经接受过一些数学和数值方法的基本训练,并且掌握Python编程的基础知识。《Python科学计算和数据科学应用(第2版)》的重点是使用Python进行实际计算问题的求解。每章都会对该章涉及的理论知识做简单介绍,主要是为了向读者介绍相关的符号并回顾基本的方法和算法。但是,《Python科学计算和数据科学应用(第2版)》并不是数值方法的自洽介绍。为了帮助那些对《Python科学计算和数据科学应用(第2版)》某些章介绍的主题不太熟悉的读者,每章在最后都会给出扩展阅读。另外,如果读者没有Python编程经验,将《Python科学计算和数据科学应用(第2版)》与专门介绍Python编程语言的书一起阅读会很有用。
《Python科学计算和数据科学应用(第2版)》的组织方式
《Python科学计算和数据科学应用(第2版)》第1章将介绍科学计算的一般原理以及使用Python进行科学计算的主要开发环境,重点介绍IPython及其交互式Python命令行,还介绍优秀的Jupyter Notebook应用以及Spyder IDE。
在第2章,我们将介绍NumPy库,另外还将讨论基于数组的计算及其优点。在第3章,我们将关注使用SymPy库进行符号计算,符号计算在很多方面都是对基于数组的计算的补充。在第4章,我们将介绍使用matplotlib库进行绘图和可视化。第2~4章为我们提供了基本的计算工具:数值计算、符号计算、可视化,这些工具将在《Python科学计算和数据科学应用(第2版)》其余章节用于解决特定领域的问题。
第5章的主题是方程求解,将分别介绍如何使用SciPy和SymPy库的数值方法和符号方法。在第6章,我们将探讨优化问题,这是从方程求解自然延伸出来的。我们主要使用SciPy库,同时也会简单地使用cvxopt库。第7章主要介绍插值,插值是另外一种有很多应用的基本数学工具,在高级算法和方法中有着重要的作用。第8章将介绍数值积分和符号积分。第5~8章主要介绍所有计算工作中经常使用的核心计算技术,这几章的大部分方法都可以在SciPy库中找到。
第9章将介绍常微分方程。第10章将介绍稀疏矩阵和图论相关的方法,这些有助于为第11章做准备。第11章将讨论偏微分方程,偏微分方程虽然在概念上与常微分方程密切相关,但是需要使用不同的技术,需要用到第10章介绍的稀疏矩阵。
从第12章开始,我们的研究方向将转到数据分析和统计分析。在第12章,我们将介绍Pandas库及其优秀的数据分析框架。第13章将介绍基本的统计分析以及SciPy stats包中的相关方法。第14章将介绍使用statsmodels库进行统计建模。第15章将结合机器学习(使用scikit-learn库)继续讨论统计分析和数据分析。第16章是介绍统计分析的最后一章,将讨论贝叶斯统计和PyMC库。第12~16章介绍了统计分析和数据分析,它们也是近年来Python科学计算社区里迅速发展的重要领域。
第17章将简要回顾科学计算的另外一个核心领域:信号处理。第18章讨论数据的输入输出,以及多种读写数据文件的方法,这是大部分计算工作所必需的基本工具。第19章将介绍提速Python代码的两种方法:分别使用Numba和Cython库。
附录介绍《Python科学计算和数据科学应用(第2版)》中所使用软件的安装方法。我们可以使用conda包管理器来安装这些软件(大部分是Python库)。conda包管理器也可用来创建虚拟的、独立的Python环境,这对于创建稳定和可复制的计算环境非常重要。附录还讨论如何使用conda包管理器来处理这种环境。
源代码下载
《Python科学计算和数据科学应用(第2版)》的每章都将提供Jupyter Notebook,其中包含该章中所有的代码。这些Notebook及其代码运行所需的数据文件都可以从www.apress.com/9781484242452下载,读者也可以通过扫描封底的二维码来下载。