1.2 数学与Python
Python拥有很丰富的库,结合在编程方面的强大功能,可以只使用Python这一种语言去构建以数据为中心的应用程序。同时,Python是一个混合体,丰富的工具集使它介于传统的脚本语言和系统语言之间。Python具有所有脚本语言所具有的简单和易用的特征,并且拥有许多编译语言的工具。此外,Python还提供了与数学计算相关的类库,如NumPy、SciPy、SymPy、StatsModels等。
1.2.1 NumPy
NumPy是Numerical Python的简称,是Python实现科学计算的基础包。NumPy主要提供以下功能。
(1)快速高效的多维数组对象ndarray。
(2)可对数组执行元素级计算及直接对数组执行数学运算的函数。
(3)用于读写硬盘上基于数组的数据集的工具。
(4)行列式计算、矩阵运算、特征分解、奇异值分解的函数与方法。
(5)将C、C++、Fortran代码集成到Python的工具。
除了为Python提供快速的数组处理能力外,NumPy在数据分析方面还有另外一个主要作用,即作为在算法支架间传递数据的容器。对于数值型数据,NumPy数组在存储和处理时要比内置的Python数据结构高效得多。此外,由低级语言(如C和Fortran)编写的库可以直接操作NumPy数组中的数据,无须进行任何数据复制工作。
1.2.2 SciPy
SciPy是一个基于Python的开源库,是一组专门解决科学计算中各种基本问题的模块的集合,经常与NumPy、StatsModels、SymPy这些库一起使用。SciPy的不同子模块有不同的应用,如插值、积分、优化、图像处理等。SciPy主要包含了8个模块,每个模块的主要功能如表1-1所示。
表1-1 SciPy的模块及其功能简介
1.2.3 SymPy
SymPy的全称为Symbolic Python,是由纯Python语言编写的一个用于符号运算的库,能够与其他科学计算库相结合。符号化的计算采用的是数学对象符号化的计算方式,使用数学对象的精确标识,而不是近似的,计算结果可以为一个数学表达式。它的目标在于成为一个富有特色的计算机代数系统,同时保证自身的代码尽可能简单,且易于理解,容易扩展。
1.2.4 StatsModels
StatsModels是一个与统计相关的Python库。它在统计计算方面可以视为SciPy的补充,包括数据的描述性统计、统计模型的估计和推断等,对每一个模型都会生成一个对应的统计结果。统计结果会和现有的统计包进行对比,以保证其正确性。