本节讲解普通数组、序列数组、随机小数数组和随机整数数组的创建,以及如何将整个DataFrame表格数据转换为数组,将DataFrame表格每列数据转换为数组。
创建普通数组可以使用np.array()函数,此函数的参数可以是任何序列类型的对象。例如将列表创建为普通数组的代码如下:
运行结果如下:
print(arr)打印出的数组显示为['张三''李四''王二'],呈现方式与列表比较相似,列表的元素之间用逗号分隔,数组的元素之间用空格分隔。
print(type(arr))打印出的类型显示为<class'numpy.ndarray'>,ndarray表明是普通数组类型,ndarray是具有相同类型和大小项目的(通常是固定大小的)多维容器。
既然普通数组是多维容器,接下来再创建一个多维数组,示例代码如下:
运行结果如下:
以上代码创建的是二维数组,数组中的元素数据类型必须保持一致,在上面二维数组中,列表[66,88,99]中的元素是数字类型,但生成为数组后,数组中所有元素的数据类型转换为了字符串类型。
创建一个指定数字范围内的等差序列数组,可以使用np.arange()函数。它创建数组的方式非常灵活,参数可以是1个、2个或者3个,示例代码如下:
运行结果如下:
通过观察上面代码运行的结果,可以得出np.arange()函数的3种情况。
(1)1个参数时,起始值默认为0,参数值为终止值,步长值默认为1。
(2)2个参数时,第1个参数为起始值,第2个参数为终止值,步长值默认为1。
(3)3个参数时,第1个参数为起始值,第2个参数为终止值,第3个参数为步长值。
在做数据测试时,经常需要生成一些随机数据。在NumPy中可使用np.random.rand()函数生成随机小数。下面分别创建单个随机小数,一维、二维和三维随机小数数组,示例代码如下:
运行结果如下:
上面的示例只演示到了三维随机小数数组,如果要创建更多维度,在np.random.rand()函数的参数中添加即可。
创建随机整数数组可使用np.random.randint()函数,使用函数的第1和2个参数分别指定随机整数的起始值和终止值,使用size参数指定随机整数的维度。下面分别创建单个随机整数,一维、二维和三维随机整数数组,示例代码如下:
运行结果如下:
通过前文我们已了解了NumPy数组的结构及创建方式,但在实际工作中,不但需要创建数组,很多时候更需要将DataFrame表格和Series数据转换为数组。
首先读取Excel文件中的数据,如图3-1所示,将信息表数据读取给df变量,df是DataFrame类型表格,再分别使用np.array()函数、df.to_numpy()函数和df.values属性将df表转换为数组,示例代码如下:
图3-1 被读取的Excel文件
运行结果如下:
在上面的代码中,变量arr1、arr2和arr3返回的数组结果均相同,所以只打印了arr1数组。
Series数据也可以转换为数组,同样用np.array()函数、s.to_numpy()函数和s.values属性3种不同的方法将Series数据转换为数组,同样使用图3-1所示的Excel文件,读取并赋值给df变量,然后循环读取df中的每列数据,使用不同的方法转换为数组,示例代码如下:
运行结果如下:
上面的代码是将df表中每列数据循环出来赋值给s变量,s变量中存储的就是Series数据。再通过3种不同方法分别转换赋值给变量arr1、arr2和arr3,它们存储的数据相同,并且均是一维数组。