
1.3.1 NumPy库应用入门
NumPy库提供了很多高效的数值运算工具,同时在矩阵运算等方面提供了很多高效的函数,尤其是N维数组,在数据科学等计算方面应用广泛。接下来简单介绍NumPy库的相关使用。
为了便于使用,在导入NumPy库时可以使用别名np代替(本书中的NumPy库均使用np作为别名),如下所示:

导入NumPy库之后,针对该库的入门使用,主要分为数组生成、数组中的索引与数组中的一些运算函数进行介绍。
1.数组生成
在NumPy库中生成数组有多种方式,如可以使用np.array()函数生成一个数组:

上述程序使用np.array()函数将列表生成数组,并且可以使用数组A的shape属性查看数组的形状,使用ndim属性查看数组的维度。
在NumPy库中,可以使用np.zeros()函数生成指定形状的全0数组,使用np.ones()函数生成指定形状的全1数组,使用np.eye()函数生成指定形状的单位矩阵(对角线的元素为1),示例如下所示:

在使用np.array()函数生成数组时,可以使用参数dtype指定其数据类型。例如,使用np.float64指定数据为64位浮点型,使用np.float32指定数据为32位浮点型,使用np.int32指定数据为32位整型。另外,也可以使用数组的astype()方法修改数据的类型。相关示例如下所示:


2.数组中的索引
可以利用切片获取数组中的元素。其中,索引可以是获取一个元素的基本索引,也可以是获取多个元素的切片索引,还可以是根据布尔值获取元素的布尔索引。使用切片获取元素的相关程序如下所示:


在NumPy库中使用np.where()函数可以找到符合条件的值,并找到符合条件的值的位置,如输出满足条件的行索引和列索引,并且也可以输出满足指定条件时的内容,与不满足指定条件时的内容。相关程序示例如下所示:

获得的数组可以使用*.T方法进行转置,而使用transpose()函数可以对数组的轴进行变换,如将3×4×2的数组转换为2×4×3的数组,可以使用下面的方式:

3.数组中的一些运算函数
NumPy库中有很多关于数组运算的函数,如计算数组的均值可以使用mean()函数,计算数组的和可以使用sum()函数,计算累加和可以使用cumsum()函数,相关程序如下所示:

数组的标准差和方差在一定程度上反映了数据的离散程度,可以使用std()函数计算标准差,使用var()函数计算方差。同时,使用max()函数和min()函数可以计算最大值和最小值,相关程序如下所示:


随机数是在机器学习中经常会使用的内容,所以NumPy库中提供了很多生成各类随机数的方法,其中,设置随机数种子可以使用np.random.seed()函数,随机数种子可以保证在使用随机数函数生成随机数时,随机数是可以重复出现的。
生成服从正态分布的随机数可以使用np.random.randn()函数,生成0~n的整数的随机排序可以使用np.random.permutation()函数,生成服从均匀分布的随机数可以使用np.random.rand()函数。在指定的范围内生成随机数可以使用np.random.randint()函数。这些函数的示例如下所示:


NumPy库中还提供了保存和导入数据的函数np.save()和np.load()。其中,np.save()函数通常用于将一个数组保存为.npy文件;np.savez()函数通常用于保存多个数组,并且可以为每个数组指定名称,方便导入数组后获取数据。相关程序的使用如下所示:
