
2.1 多维数组
多维数组(n-dimensional array,简称ndarray),是在数据处理领域中必用的数据结构,类似于基本数据结构中的列表:有序且内容可修改。我们可以将多维数组看成Python基本数据类型的扩展,其提供更多的属性和方法。
2.1.1 创建数组
1.类型转换方式创建
利用类型转换方式创建数组是最常见的数组创建方式,本例中使用np.array类型转换方法分别将元组和列表转换成一维数组和三维数组。

2.批量创建
除了手动给每个数组元素赋值,更多的时候是需要创建数组并按照一定规则批量填充数据。下面介绍使用Numpy提供的批量创建数组中数据的方法创建初值为0,终值为5(不包含终值),步长为1的数组。

创建初值为2,终值为5(不包含终值),步长为1的数组。

创建初值为2,终值为5(包含终值endpoint=True),元素为4个的等差数组。

创建基数为10的等比数组,首个元素为10^0=1,末元素为10^2=100,共5个元素。

批量创建N个相同元素的数组。

创建与给定数组形状相同的新数组:本例中,用zero_like方法创建了元素全为0且形状与a相同的数组b,而创建值全为1(ones_like)、全为空(empty_like),以及全为某一特定值(full_like)数组的方法与此类似。

Numpy.random系列函数用于创建随机数组:本例使用randint函数创建最小值为1,最大值为3(不包含最大值),元素为5个的整型数组;Numpy.random还提供了rand函数来创建0~1分布的随机样本数组、randn函数来创建标准正态分布样本数组等。

np.from*系列函数用于通过现有的数据创建数组,本例使用np.fromfunction函数创建二维数组九九乘法表,第一个参数是调用的函数名,第二个参数是数组的形状。该系列函数还包括frombuffer,fromstring,fromiter,fromfile,fromregex等函数。

2.1.2 访问数组
1.访问数组元素
通过指定索引值访问单个元素,支持正向索引和反向索引。

通过索引值列表返回多个元素并形成新的数组,新数组与原数组不共享内存,支持多维度索引。

根据值的范围获取子数组。

以布尔值方式获取数组元素,True为选取对应位置的元素。

ndarray还支持切片方式获取子数组,切片格式为[起始位置:终止位置:步长],不包含终止值,使用格式中三个元素的组合取子数组,切片与原数组共享同一空间。

在访问多维数组时,用元组(即圆括号)作为下标。

2.常用的数组属性
属性shape用于描述数组的维度。

属性dtype用于描述数组的元素类型。

属性ndim用于描述数组维度的个数,也称作秩。

属性size用于描述数组包含的元素个数。

属性nbytes用于描述数组所占空间大小。

2.1.3 修改数组
上一小节介绍数据元素值及属性的查询方法,本小节将从增、删、改几方面介绍ndarray的编辑方法。
1.添加数组元素
ndarray方法支持向数组中添加元素后生成新数组:append方法支持在数组末尾添加元素,insert方法支持在指定位置添加元素。

2.删除数组元素
ndarray方法支持使用索引值删除数组中的元素并返回新数组。本例中,删除数组中索引值为3的元素(即第四个元素)。

3.修改元素值
使用索引值修改单值。

使用切片方法修改多值。

4.修改形状
使用reshape方法可修改数组形状,当参数设置成-1时为自动计算对应值。reshape方法返回的数组与原数据共享存储空间。

5.修改类型
首先,查看Numpy库支持的所有数据类型。

其次,指定类型并创建数组。

最后,转换数组中数据的类型,并查看其转换后的具体类型。
