购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 NumPy数组的创建与转换

本节讲解普通数组、序列数组、随机小数数组和随机整数数组的创建,以及如何将整个DataFrame表格数据转换为数组,将DataFrame表格每列数据转换为数组。

3.2.1 普通数组

创建普通数组可以使用np.array()函数,此函数的参数可以是任何序列类型的对象。例如将列表创建为普通数组的代码如下:

运行结果如下:

print(arr)打印出的数组显示为['张三''李四''王二'],呈现方式与列表比较相似,列表的元素之间用逗号分隔,数组的元素之间用空格分隔。

print(type(arr))打印出的类型显示为<class'numpy.ndarray'>,ndarray表明是普通数组类型,ndarray是具有相同类型和大小项目的(通常是固定大小的)多维容器。

既然普通数组是多维容器,接下来再创建一个多维数组,示例代码如下:

运行结果如下:

以上代码创建的是二维数组,数组中的元素数据类型必须保持一致,在上面二维数组中,列表[66,88,99]中的元素是数字类型,但生成为数组后,数组中所有元素的数据类型转换为了字符串类型。

3.2.2 序列数组

创建一个指定数字范围内的等差序列数组,可以使用np.arange()函数。它创建数组的方式非常灵活,参数可以是1个、2个或者3个,示例代码如下:

运行结果如下:

通过观察上面代码运行的结果,可以得出np.arange()函数的3种情况。

(1)1个参数时,起始值默认为0,参数值为终止值,步长值默认为1。

(2)2个参数时,第1个参数为起始值,第2个参数为终止值,步长值默认为1。

(3)3个参数时,第1个参数为起始值,第2个参数为终止值,第3个参数为步长值。

3.2.3 随机数组

在做数据测试时,经常需要生成一些随机数据。在NumPy中可使用np.random.rand()函数生成随机小数。下面分别创建单个随机小数,一维、二维和三维随机小数数组,示例代码如下:

运行结果如下:

上面的示例只演示到了三维随机小数数组,如果要创建更多维度,在np.random.rand()函数的参数中添加即可。

创建随机整数数组可使用np.random.randint()函数,使用函数的第1和2个参数分别指定随机整数的起始值和终止值,使用size参数指定随机整数的维度。下面分别创建单个随机整数,一维、二维和三维随机整数数组,示例代码如下:

运行结果如下:

3.2.4 转换数组

通过前文我们已了解了NumPy数组的结构及创建方式,但在实际工作中,不但需要创建数组,很多时候更需要将DataFrame表格和Series数据转换为数组。

1.DataFrame表格转换为数组

首先读取Excel文件中的数据,如图3-1所示,将信息表数据读取给df变量,df是DataFrame类型表格,再分别使用np.array()函数、df.to_numpy()函数和df.values属性将df表转换为数组,示例代码如下:

图3-1 被读取的Excel文件

运行结果如下:

在上面的代码中,变量arr1、arr2和arr3返回的数组结果均相同,所以只打印了arr1数组。

2.Series数据转换为数组

Series数据也可以转换为数组,同样用np.array()函数、s.to_numpy()函数和s.values属性3种不同的方法将Series数据转换为数组,同样使用图3-1所示的Excel文件,读取并赋值给df变量,然后循环读取df中的每列数据,使用不同的方法转换为数组,示例代码如下:

运行结果如下:

上面的代码是将df表中每列数据循环出来赋值给s变量,s变量中存储的就是Series数据。再通过3种不同方法分别转换赋值给变量arr1、arr2和arr3,它们存储的数据相同,并且均是一维数组。 4dMnIJYoWoI9y3LGxbSkfJT7VRK1QgQ86mAIlnCFNa8Pzg7cUVHn6Rgx1I/Y9olI

点击中间区域
呼出菜单
上一章
目录
下一章
×