NumPy(Numerical Python)是Python中用于科学计算的一个开源库,提供了一个强大的多维数组对象(Ndarray),以及一系列用于数组操作的函数。NumPy是许多科学计算和数据分析库的基础,包括SciPy、Pandas、Matplotlib等。
NumPy数组的创建可以通过多种方式实现,以下是一些常用的方法。
(1)从列表创建:使用numpy.array()函数可以从Python列表创建NumPy数组。
【例2-1】 从列表创建数组。依次输入以下代码,并观察输出结果。
(2)使用特定函数创建:NumPy提供了一些特定的函数用于创建特定类型的数组,如表2-1所示。
表2-1 选项说明
【例2-2】 利用特定函数创建数组。依次输入以下代码,并观察输出结果。
在NumPy中,数组的索引和切片操作是非常重要的,基于此可以访问数组的特定元素或子集。索引和切片操作使得对数组的操作变得非常灵活和高效,可以方便地访问数组的特定元素或子集。
【例2-3】 数组的索引与切片应用示例。依次输入以下代码,并观察输出结果。
(1)一维数组的索引和切片:对于一维数组,可以使用整数索引来访问单个元素,使用切片来访问子数组。
(2)多维数组的索引和切片:对于多维数组,可以使用逗号分隔的索引元组来访问特定元素,也可以对不同维度进行切片。
(3)布尔索引:使用布尔数组可以进行索引,从而选择满足特定条件的元素。
(4)花式索引:使用整数数组或整数列表可以进行索引,从而选择特定位置的元素。
(5)切片的默认值:在切片操作中,如果省略了起始索引,则默认为0;如果省略了结束索引,则默认为数组的长度;如果省略了步长,则默认为1。
我们可以灵活地改变数组的形状、维度、顺序和内容,以满足不同的数据处理和分析需求。在NumPy中,数组的变换指的是改变数组的形状、维度或顺序的操作。NumPy提供了丰富的函数和方法来进行数组的变换操作。
【例2-4】 数组的变换应用示例。依次输入以下代码,并观察输出结果。
(1)改变形状。利用reshape()函数可以改变数组的形状,返回一个具有新形状的数组,但不改变原始数组。利用flatten()可以将多维数组变为一维数组。
说明 要查看变量的输出结果,请参照本例采用print()函数,本书后续将不再给出查看变量输出结果的代码。
(2)转置。利用transpose()函数可以对数组的维度进行转置。.T属性的功能与transpose()相同,其使用更简洁。
(3)扩展维度。利用newaxis属性可以在数组的特定位置增加一个维度。
arr=np.array([1,2,3]) expanded_arr=arr[:,np.newaxis]
(4)连接和分裂。利用concatenate()函数可以连接多个数组。
arr1=np.array([[1,2],[3,4]]) arr2=np.array([[5,6]]) concatenated_arr=np.concatenate((arr1,arr2),axis=0)
利用split()函数可以将数组分裂为多个子数组。
subarrays=np.split(arr,3)
(5)重复和堆叠:利用repeat()函数可以重复数组中的元素。利用tile()函数可以将数组沿指定轴堆叠。
repeated_arr=np.repeat(arr,3) tiled_arr=np.tile(arr,(2,3))
(6)排序:利用sort()函数可以对数组进行排序。
sorted_arr=np.sort(arr)
NumPy中的基本运算指的是对数组进行算术运算、逻辑运算和数学函数运算等操作。NumPy提供了丰富的函数和运算符来对数组进行操作。
【例2-5】 基本运算示例。依次输入以下代码,并观察输出结果。
(1)算术运算:NumPy允许对数组执行标准的算术运算,如加法、减法、乘法和除法等。这些运算可以逐元素进行,也可以与标量进行运算。
(2)逻辑运算:NumPy允许对数组进行逻辑运算,如逻辑与、逻辑或和逻辑非等。
(3)数学函数运算:NumPy提供了大量的数学函数,如平方函数、开方函数、指数函数、对数函数等,这些函数可以逐元素应用于数组。