第5章 NumPy库与多维数组
5.1 NumPy的简介
NumPy是应用Python进行科学计算的基础库。它是一个由多维数组对象、多种衍生的对象(如掩码式数组“masked arrays”或矩阵),以及一系列为快速计算数组而生的例程,包括数学运算、逻辑运算、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等组成的库。
NumPy提供了高级的数值编程工具和精密的运算库,它已经在很多大型金融公司、科学计算组织中得到广泛使用。
NumPy数组和标准Python序列的不同之处:
(1)NumPy数组在创建时就已经固定了尺寸,当尺寸发生改变时就会创建一个新的数组。而Python中的列表数据类型可以动态变化。
(2)在同一个NumPy数组中所有元素的数据类型都要一致,并在内存中占有相同的大小。但Python中的列表可包含不同数据类型的元素。
(3)在数据量巨大时,使用NumPy进行高级数据运算比使用Python的内置序列更有效,执行代码也更少。
(4)在Python中许多科学计算库是建立在NumPy库基础上的,虽然这些科学计算库也保留了Python内置序列的输入接口,但实际上在输入前还是要转成NumPy数组,它们的计算结果输出一般也是NumPy数组。
(5)NumPy数组运算比Python中的列表数据类型运算更简洁,运算速度也更快。
当Python中的列表数据“lista”与“listb”相乘时,需要使用for循环语句才能实现,而且当列表长度增加时,运算速度很慢。而当NumPy的数组“na”与数组“nb”相乘时,只需要一条命令“na*nb”即可实现,且运算速度非常快。
因此,在数值运算、仿真、深度学习中会经常使用NumPy库中的函数,并且NumPy通常与SciPy(Scientific Python)和Matplotlib(绘图库)一起使用。