「Python数据科学」一文掌握NumPy创建ndarray的常用方法

南宫理的日志录 2024-12-18 08:36:44
引言

多维数组ndarray是NumPy库的核心数据结构,在真正对一个ndarray进行各种操作之前,我们首先需要能够创建ndarray。常见的创建ndarray的方法有很多中,本文就来一一介绍这些方法。

本文的主要内容有:

1、从其他Python数据结构创建

2、使用NumPy数组创建函数创建

3、基于已存在的NumPy数组创建

4、从磁盘读取文件的方式创建

5、使用其他Python库的库函数

从其他Python数据结构创建

这种方法,是使用array()函数,基于一个现有的Python序列,比如列表或者元组,来定义NumPy的数组。

首先看下array()函数的定义:

通常只需要传入一个列表或者元组对象即可,也可以指定元素的类型,不指定时,会自动进行类型的推断。

使用NumPy数组创建函数创建

NumPy库中有40多个内置函数,可以用于创建数组,但真正比较常用的有以下这几个函数:

1、linspace()函数

用于创建等差数组,也就是数组中的元素是均匀分布的。

从函数定义中,可以看出有以下几点需要注意:

1)通常只需要指定等差数列的开始值和结束值即可,默认生成一个包含50个元素的等差数列。

2)生成的元素中,默认将开始值start和结束值stop均包含在内的。

2、arange()函数

arange()函数也可以用于创建等差的数组,类似于Python内置的range()函数。

从函数的定义看,与linspace()不同的地方在于:

1)不能指定元素数量,通过参数start、stop、step来进行自动推断。

2)生成的元素范围为[start, stop),不包含结束值。

3、ones()函数

创建指定形状的数组,并将元素填充为1。

4、zeros()函数

用于创建指定形状的数组,并将元素填充为0。

需要注意的是,数组的形状,应当使用元组进行传递(虽然一维数组传递一个整数也是可以的)。

5、random模块

使用numpy.random模块中的函数可以创建随机数组。

其中,使用random.uniform()函数可以创建均匀分布的随机数组。

上面代码中创建了-1到1之间均匀分布的随机数组,元素个数1000000个,通过直方图可视化查看时,将其分为1000组,基本上是可以看出均匀分布的。

uniform()函数中的参数分别为:

low指定随机分布的下限,high指定随机分布的下限,size指定数组元素的个数。

通过random.normal()可以创建正态分布的随机数组。

上面代码中,创建了一个期望为0,标准差为0.1的正态分布的随机数组。

normal()函数中的参数分别为:

loc指定正态分布的期望值,scale指定正态分布的标准差,size指定数组元素个数。

除了以上5个函数外,还有其他创建各种特定形状的矩阵的函数等,根据场景需要,可以在使用时查阅相关API文档。

基于已存在的NumPy数组创建

如果已经存在一个NumPy的多维数组,我们可以利用NumPy提供的函数,通过复制、连接或者更改,来创建一个新的NumPy的多维数组对象。

1、copy()函数

使用numpy的copy函数,可以复制一个多维数组。

从上面代码中,可以看到通过NumPy.copy()函数可以进行数组的复制,也可以直接调用一个已有数组对象的copy()方法来进行。

其实,NumPy中的很多操作,提供两种方式对多维数组进行操作:

1)使用NumPy中的函数进行操作,将数组对象作为函数的参数。

2)使用数组对象的对应方法进行操作。

2、stack系列函数

NumPy提供很多方法可以进行数组的拼接,从而生成一个新的数组。比如:vstack()和hstack()分别进行垂直和水平的连接。

从磁盘读取文件的方式创建

这种方式是创建大型数组的最常见情况,但是,很多时候,我们其实会选择使用pandas进行IO操作,所以,这种方式,仅作了解即可。

有数据文件如下:

从文件中读取数据并创建数组的代码如下:

需要说明的是data.csv与代码文件在同一个路径中。

由于文件是以逗号分割的csv文件,并且第一行为表头,所以需要跳过一行。

使用其他Python库的库函数

由于NumPy是Python科学计算库相关技术栈中的基础核心库,所以,许多Python库,比如SciPy、Pandas、OpenCV、PyTorch等,都可以使用NumPy数组作为数据交换的通用格式。

因此,这些库中也都会提供一些创建、操作和处理NumPy数组的相关函数。这些内容在后面介绍到相关库时,会再行展开说明。

总结

本文分别介绍了基于Python原生的序列创建NumPy数组、基于已存在的NumPy数组创建新的NumPy数组、NumPy内部函数创建特定数组、从磁盘数据创建NumPy数组和使用其他Python数据科学库的库函数创建NumPy数组的方法。

需要说明的是,创建NumPy数组的方式有很多种,这里只是列举了笔者认为相对较为常用的方法。

感谢您的拨冗阅读,希望对您有所帮助!

0 阅读:1

南宫理的日志录

简介:深耕IT科技,探索技术与人文的交集