Python数据分析与可视化(第2版) 教案 2.8 Python的NumPy库_第1页
Python数据分析与可视化(第2版) 教案 2.8 Python的NumPy库_第2页
Python数据分析与可视化(第2版) 教案 2.8 Python的NumPy库_第3页
Python数据分析与可视化(第2版) 教案 2.8 Python的NumPy库_第4页
Python数据分析与可视化(第2版) 教案 2.8 Python的NumPy库_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课题2.8Python的NumPy库课型讲练授课班级大数据授课时数4教学目标1.能够创建一维和二维数组。2.能够对数组进行属性查询。3.能够对数组进行切片操作。教学重点1.能够创建一维和二维数组。2.能够对数组进行属性查询。教学难点1.能够对数组进行切片操作。学情分析在构建DataFrame的数据集时,有一种方法就是借助于二维数组创建,因此,掌握二维数组对于后续内容的学习很重要。NumPy是Python的开源的科学计算机工具包,是一个高级数值编程工具,通过NumPy可以不用遍历循环就实现大型的矩阵的计算。NumPy可以实现生成随机数、线性代数、傅里叶变换等功能。同时,NumPy可以保存任意类型的数据,这使得Numpy可以快速而高效地处理各种数据。NumPy提供了许多高级的数值编程工具,如矩阵数据类型、矢量处理,以及精密的运算库,NumPy专为进行严格的数字处理而产生。在导入NumPy的时候,一般需要先使用一行代码,代码如下:importnumpyasnp一、创建数组对象1.创建一维数组当数组中每个元素都只带有一个下标时,这样的数组就是一维数组,一维数组是由数字组成的顺序排序单一数组。一维数组是计算机程序中最基本的数组,二维及多维数组可以看作是一维数组的多次叠加产生的。Python提供array函数可以创建一维数组,通过array函数创建一维数组类似于创建列表list,但是array函数没有各种运算函数,因此不太适合进行各种复杂计算。利用array函数创建一维数组的一般格式为:np.array([value1,value2,…])示例代码如下:importnumpyasnparr1=np.array([1,2,3])print("创建的一维数组为arr1为:\n",arr1)输出结果如图2-*所示。图2-*创建一维数组示例结果2.创建二维数组二维数组与一维数组相似,但是用法上要比一维数组复杂一点。仅从表现形式上看,m行n列二维数组就是一个m*n矩阵。利用array函数也可以创建二维数组,利用array函数创建二维数组的一般格式为:np.array([[value11,value12,…],[value21,value22,…],…])其中,在创建二维数组时,需要加2层括号,这一点与创建一维数组不同。示例代码如下:arr2=np.array([[1,2,3],[2,3,4]])print("创建的2*3的二维数组为:\n",arr2)arr3=np.array([[1,2,3],[2,3,4],[3,4,5]])print("创建的3*3的二维数组为:\n",arr3)输出结果如图2-*所示。图2-*创建二维数组示例结果3.利用arange和linspace等方法生成数组利用array函数创建数组,其方法都是先创建一个序列,然后再转换成数组,这样的创建数组的效率显然不高,因此NumPy提供专门的函数用来创建数组,如arange函数和linspace函数。(1)利用arange函数生成数组arange函数类似于Python的自带函数range,arange函数的一般格式为:np.arange(start,stop,step)其中,start表示初始值,stop表示终止值,并且终止值不能取到的,step表示步长。(2)利用linspace函数生成数组linspace函数可以不通过间隔而是元素个数的方式成数组,linspace函数一般格式为:np.linspace(start,stop,n)其中,start表示初始值,stop表示终止值,并且终止值是可以取到的,这一点与arange函数不同,n表示生成数组的元素个数。示例代码如下:print("0到1之间以0.2为间隔的数组为:",np.arange(0,1,0.2))print("0到1之间以0.2为间隔的数组为:",np.linspace(0,0.8,5))输出结果如图2-*所示。图2-*利用arange和linspace等方法生成数组示例结果二、查看数组属性为了能够更好地理解数组,了解数组的基本属性是十分有必要的,数组的基本属性如表2-*所示。表2-*数组属性及其作用表属性作用ndim表示数组的维度。shape表示数组形状,结果为(m,n)表示m行n列,shape[0]表示行数,shape[1]表示列数。size表示数组的元素总数。dtype表示数组中元素的类型。示例代码如下:print("arr1的维度为:%d\narr2的维度为:%d\narr3的维度为:%d"%(arr1.ndim,arr2.ndim,arr3.ndim))print("arr2:\n",arr2)print("arr2的形状为:",arr2.shape)print("arr2的行数为:",arr2.shape[0])print("arr2的列数为:",arr2.shape[1])print("arr2的元素总数为:",arr2.size)print("arr2的元素类型为:",arr2.dtype)输出结果如图2-*所示。图2-*查看数组属性示例结果三、数组的索引与切片1.一维数组的索引与切片一维数组的索引与切片与列表类似,一维数组的索引和切片一般格式为:array[index]array[start:last:step]其中,index表示索引位置,并且是从0开始的。start表示起始索引,start可以省略,默认是0。last表示终止索引,并且这个终止索引是不能取到的。step表示索引步长,即索引之间的间隔。示例代码如下:arr4=np.arange(11,20)print("数组为:",arr4)print("索引号1对应的元素为:",arr4[1])print("索引号1到索引号4对应的切片为:",arr4[1:5])输出结果如图2-*所示。图2-*一维数组的索引与切片示例结果2.二维数组的索引与切片二维数组两个维度(行与列)都有索引,在访问的时候,要用逗号隔开,并且是先访问行索引再访问列索引。二维数组的索引和切片一般格式为:array[row_index,column_index]array[row_start:row_last,column_start:column_last]其中,row_index表示行索引位置,column_index表示列索引位置,并且都是从0开始。row_start和column_start表示行与列的起始索引,默认是0。row_last和column_last表示行与列的终止索引,并且这个终止索引对应的值是不能取到的。示例代码如下:arr5=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])print("数组为:\n",arr5)print("行索引为1,列索引为2对应的元素为:\n",arr5[1,2])print("行索引为1到2,列索引为2到3对应的元素为:\n",arr5[1:3,2:4])print("行索引为2的整列数据为:",arr5[2,:])print("列索引为3的整列数据为:",arr5[:,3])输出结果如图2-*所示。图2-*二维数组的索引与切片示例结果四、NumPy随机数NumPy有强大的生成随机数的功能,而与随机数相关的函数都在random模块中,其中包含了可以生成多种概率分布的随机数函数,但是需要注意的是,使用numpy库中的random模块和直接使用python中random模块在一些函数上有不同的使用方法。比如生成随机整数randint,在numpy库中是使用random.randint是不能取到终止整数的,而在python的random模块中,使用randint是可以取到终止整数的。1.生成随机小数(1)生成一维随机小数生成1个0到1之间随机小数的一般格式为:np.random.rand()生成x个0到1之间随机小数组成的一维数组的一般格式为:np.random.rand(x)生成1个0到y(y为整型)之间随机小数的一般方法为:np.random.rand()*y生成x个0到y(y为整型)之间随机小数组成的一维数组的一般方法为:np.random.rand(x)*y示例代码如下:print("生成1个0到1之间的小数",np.random.rand())print("生成5个0到1之间的小数",np.random.rand(5))print("生成1个0到2之间的小数",np.random.rand()*2)print("生成5个0到2之间的小数",np.random.rand(5)*2)输出结果如图2-*所示。图2-*生成一维随机小数示例结果(2)生成二维随机小数生成m行n列的0到1之间随机小数二维数组的一般方法为:np.random.rand(m,m)示例代码如下:print("生成2*2的0到1的随机小数二维数组:\n",np.random.rand(2,2))print("生成2*3的0到2的随机小数二维数组:\n",np.random.rand(2,3)*2)输出结果如图2-*所示。图2-*生成二维随机小数示例结果2.生成随机整数生成随机整数可以使用randint函数,randint函数的一般方法为:np.random.randint(start,stop,size=[m,n])其中,start表示起始整数,stop表示终止整数,起始整数能取到而终止整数不能取到。size=[m,n]表示生成m行n列二维数组,size默认为None,即默认生成一个随机整数。 示例代码如下:print("生成1个0到10的随机整数:\n",np.random.randint(11))print("生成1个5到15的随机整数:\n",np.random.randint(5,16))print("生成3*3的1到100随机整数二维数组:\n",np.random.randint(1,101,size=[3,3]))输出结果如图2-*所示。图2-*生成随机整数示例结果3.生成正态分布随机数正态分布是数据分布中一种常用的分布,NumPy提供了randn函数用来生成正态分布的随机数。生成x个正态分布随机数组成的一维数组的一般方法为:np.random.randn(x)生成m行n列的正态分布随机数二维数组的一般方法为:np.random.randn(m,n)示例代码如下:print("生成10个正态分布的随机数:\n",np.random.randn(10))print("生成3*3的正态分布随机数的二维数组:\n",np.random.randn(3,3))输出结果如图2-*所示。图2-*生成随机整数示例结果五、NumPy的操作1.数组转置数组转置操作是指将行与列对调,即第1行变成第1列,第2行变成第2行,以此类推。在NumPy中,数组转置可以使用T方法来实现。示例代码如下:arr6=np.array([[1,2,3],[4,5,6]])print("arr6=\n",arr6)print("arr6转置后的结果为:\n",arr6.T)输出结果如图2-*所示。图2-*数组转置示例结果2.数组变形在对数组进行操作时,经常需要对数据的形状进行改变,在NumPy中,可以使用reshape函数改变数组的形状。reshape函数一般方法为:array.reshape(m,n)其中,array表示需要改变的原数组,m和n分别表示转换后的新数组的行数和列数。示例代码如下:arr7=np.arange(10)print("原数组为:\n",arr7)arr7.reshape(2,5)print("改为2行5列后的数组为:\n",arr7.reshape(2,5))输出结果如图2-*所示。图2-*数组变形示例结果任务实训任务1:用两种方法创建由1到9九个数字组成的3*3的二维数组。具体代码如下:arr8=np.array([[1,2,3],[4,5,6],[7,8,9]])print("直接创建二维数组:\n",arr8)arr9=np.arange(1,10).reshape(3,3)print("通过reshape创建二维数组:\n",arr9)输出结果如图2-*所示。图2-*任务1输出结果任务2:创建由1到9九个数字组成的3*3的二维数组,并计算每一行的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论