书签 分享 收藏 举报 版权申诉 / 66
上传文档赚钱

类型《Python机器学习》教学课件—06NumPy数据分析.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4538850
  • 上传时间:2022-12-17
  • 格式:PPTX
  • 页数:66
  • 大小:595.64KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《Python机器学习》教学课件—06NumPy数据分析.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Python机器学习 Python 机器 学习 教学 课件 06 NumPy 数据 分析
    资源描述:

    1、Machine Learning with Python6.1目 录6.26.4安装NumPy库数据的获取数组创建与使用数据运算6.36.5本章小结6.6案例安装Numpy库本节介绍安装Numpy库,它作为一个优秀的开源科学计算库弥补了Python的不足6.13 6.1.1 Python环境下的安装 下载NumPy安装程序。打开网址https:/pypi.org/project/numpy/,运行界面如图6-1a所示。找到自己所安装的Python版本所对应的NumPy版本。可根据需要选择下载32位/64位安装程序,如图6-1b所示 a)b)图6-1 NumPy安装程序下载4 6.1.1 Pyt

    2、hon环境下的安装 将下载的文件复制到Python安装目录下的Scripts目录,如图6-2所示。例如当前安装目录为C:UsersAdministratorAppDataLocalProgramsPythonPython37Scripts。图6-2 NumPy文件位置5 6.1.1 Python环境下的安装 用cmd命令打开“命令提示符”窗口,通过cd命令切换到Python安装目录下的Scripts目录,如图6-3所示。(C:UsersAdministratorAppDataLocalProgramsPython Python37Scripts目录下)图6-3 PythonScripts地址目

    3、录6 6.1.1 Python环境下的安装 在命令提示符窗口输入pip install-upgrade pip(用于更新pip),如图6-4所示。安装wheel库,pip install wheel,如图6-5所示。图6-4 下载pip图6-5 下载wheel7 6.1.1 Python环境下的安装 安装NumPy,输入命令:pip install numpy-1.17.4-cp37-cp37m-win_amd64.whl,如图6-6所示。图6-6 安装NumPy8 6.1.1 Python环境下的安装 测试是否安装成功,在Python编译器中输入如下测试代码:import numpy as

    4、np print(np.random.rand(3.3)结果输出一个随机的33的矩阵,则说明NumPy安装成功,如图6-7所示。图6-7 测试NumPy9 6.1.2 PyCharm的安装 点击file下的settings选项。点击project interpreter选项。点击最右侧的加号按钮。输入numpy,选择搜索结果的第一个选项。点击底部的install package按钮。如底部出现successfully字样则表示安装成功。数据的获取本节介绍数据的获取和存储,常见的机器可读形式6.211 6.2.1 使用Python读写文件 open()函数 使用open()函数可以创建或打开文件

    5、并返回一个文件对象,其函数格式如下:fileobj=open(filename,mode)其中:1)fileobj:open()返回的文件对象。2)filename:该文件的字符串名。3)mode:指明文件类型和操作的字符串。a)图1-1 Python安装包下载b)12 6.2.1 使用Python读写文件 open()函数lmode的第一个字母表明对其的操作,具体值如下。r:表示读模式。w:表示写模式。如果文件不存在则新创建,如果存在则重写新内容 x:表示在文件不存在的情况下新创建并写文件。a:表示如果文件存在,在文件末尾追加写内容。l mode 的第二个字母是文件类型,具体值如下。t:代表

    6、为文本文件。b:代表为二进制文件。13 6.2.1 使用Python读写文件 write()函数l使用write(str)函数可以将其参数str中的内容写入文件中。【例 6-1】创建名为“relativity”新文件,并将一首诗写入该文件。参考程序如下:poem=There was a young lady named Bright,.Whose speed was far faster than light;.She started one day .In a relative way,.And returned on the previous night.fout=open(relativ

    7、ity,wt)fout.write(poem)fout.close()14 6.2.1 使用Python读写文件 read()和readline()函数l使用不带参数的read()函数可以一次读入文件的所有内容。例如:fin=open(relativity,rt)poem=fin.read()fin.close()len(poem)运行结果如下:15015 6.2.1 使用Python读写文件 read()和readline()函数l也可以使用readline()每次读入文件的一行,通过追加每一行拼接成原来的字符串。例如:poem=fin=open(relativity,rt)while Tr

    8、ue:line=fin.readline()if not line:break poem+=line fin.close()len(poem)运行结果如下:150对于一个文本文件,即使空行,也有1字符长度(换行字符n),因此也会返回True。当文件读取结束后,readline()与read()都会返回空字符串,被while循环判为False。16 6.2.1 使用Python读写文件 close()函数lclose()方法负责关闭文件,如果忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问。17 6.2.2 使用NumPy读写文件 本节主要介绍的机器可读文件格式为CSV。CSV(逗

    9、号分隔值)文件格式是一种非常简单的数据存储与分享方式,文件的扩展名是.csv。CSV文件将数据表格存储为纯文本,表格(或电子表格)中的每一个单元格都是一个数值或字符串,单元格之间常以逗号分隔。与Excel文件相比,CSV文件的一个主要优点是它的纯文本格式可以被大多数程序存储、转存和处理。使用CSV格式时需要注意以下几点。1)除了逗号,还有其他可代替的分隔符,例如“|”和“t”。2)有些数据会出现转义字符,如果某个值内部包含了分隔符,则该值需加上引号或者在分 隔符之前加上转义字符。3)文件可能有不同的换行符,Unix系统使用“n”,Microsoft系统使用“rn”,Mac系统之前使用“r”现在

    10、使用“n”。4)在第一行可以加上列名。18 6.2.2 使用NumPy读写文件 本章的CSV实例采用了鸢尾花数据集。为了让数据更容易阅读,下面给出一个数据样本,其中只包含经过挑选的特定字段。在文本编辑器中打开CSV文件,看到的数据应该与下列数据相似。sepal_len,sepal_width,petal_len,petal_width,Species 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5,3.6,1.4,0.2

    11、,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa 预览CSV文件的另一种方法是用电子表格程序打开,例如Excel或者WPS,这些程序将每一个数据条目显示为单独的一行。19 6.2.2 使用NumPy读写文件 使用numpy.loadtxt()函数可以方便地读写数据文件,但要求数据文件的每一行格式相同。通过loadtxt()方法来读取CSV文件的具体语法格式为:numpy.loadtxt(fname,dtype=,comments=#,delimiter=None,converters=None,skiprows=0,usecols=None,unpack=Fal

    12、se)其中:1)fname:被读取的文件(文件的相对地址或者绝对地址)。2)dtype:指定读取后数据的数据类型,为可选参数。3)comments:设置需跳过行的标识。如设置为“#”,则“#”开头的行会被跳过。4)delimiter:设置分隔符,默认值为任何空白字符,如空格,制表符。5)converters:是否对读取的数据进行预处理,可以指定一个预处理函数。6)skiprows:选择跳过的行数。7)usecols:指定需要读取的列。8)unpack:是否将数据进行向量输出。20 6.2.2 使用NumPy读写文件【例6-2】读取鸢尾花数据集csv文件。参考程序如下:import numpy

    13、as np csv_array=np.loadtxt(/Users/Downloads/iris.csv,dtype=str,delimiter=,)print(csv_array)程序运行结果如下:5.1,3.5,1.4,0.2 4.9,3,1.4,0.2 4.7,3.2,1.3,0.2 4.6,3.1,1.5,0.2 5,3.6,1.4,0.2 5.4,3.9,1.7,0.421 6.2.2 使用NumPy读写文件【例6-2】读取鸢尾花数据集csv文件。写入文本文件后可以使用numpy.savetxt()函数保存,具体的语法格式为:numpy.savetxt(fname,X)其中:1)fn

    14、ame:文件名。2)X:被写入文件的ndarray数据,数据类型为ndarray对象22 6.2.2 使用NumPy读写文件【例6-3】将例6-2中读取的结果写入一个新的文本文件并查看。参考程序如下:np.savetxt(data_output.txt,csv_array,fmt=%s)a=np.loadtxt(data_output.txt)a 程序运行结果如下:array(5.1,3.5,1.4,0.2,4.9,3.,1.4,0.2,4.7,3.2,1.3,0.2,4.6,3.1,1.5,0.2,5.,3.6,1.4,0.2,5.4,3.9,1.7,0.4)数组创建与使用 本节介绍n维数组

    15、对象,一个快速灵活的数据容器6.324 6.3.1 数组创建和基本属性 使用arange()函数可以创建一个数组,在给定间隔内返回均匀间隔的值。值在半开区 间内生成,即包括起始值但不包括结束值。其完整函数如下:numpy.arange(start,stop,step,dtype=None)其中:1)start:为起始值,数据类型为数值型,可选,默认起始值为0。2)stop:为结束值,数据类型为数值型,必须指定。3)step:步长,数据类型为数值型,可选,默认步长为1。如果指定了step,则必须给出start值。4)dtype:输出数组的数据类型。如果未给出dtype,则从其他输入参数推断数据类

    16、型。25 6.3.1 数组创建和基本属性 arange()函数生成的数组为1维数组,可以使用reshape()函数改变其维度,使之成为一个n维数组。reshape()函数的作用就是改变数组的维度,其参数为一个正整数元组,分别指定数组在每个维度上的大小。例如:import numpy as np arr1=np.arange(12).reshape(3,4)print(arr1)程序运行结果如下:array(0,1,2,3,4,5,6,7,8,9,10,11)如需自定义数组的值,可以使用array()函数。26 6.3.1 数组创建和基本属性 如需自定义数组的值,可以使用array()函数。例如

    17、:import numpy as np arr2=np.array(2,3,4)arr3=np.array(1.0,2.0,3.0,4.0)还可以通过ones()函数、zeros()、empty()函数创建全1、全0、全空值数组。例如:程序运行结果如下:arr4=np.ones(3)array(1,1,1)arr5=np.zeros(3,4)array(0,0,0,0,print(arr4)0,0,0,0,print(arr5)0,0,0,0)27 6.3.1 数组创建和基本属性 在创建好数组后,可以通过数组的属性查看数组的各项信息。ndarray.dtype:数组中元素类型。例如数组a的数据

    18、类型为int64,如果使用了32 位的 Python,得到的结果可能为int32。【例6-4】创建一个2维数组,查看其dtype属性。参考程序如下:import numpy as np arr1=np.arange(15).reshape(3,5)print(arr1)print(arr1.dtype.name)程序运行结果如下:array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14)int6428 6.3.1 数组创建和基本属性 ndarray.shape:数组的维度,为一个整数元组,表示每个维度中数组的大小。对于有n行和m列的矩阵,shape将是(n,m)。因此,

    19、shape元组的长度就是维度的个数。例如:运行结果如下:print(arr1.shape)(3,5)ndarray.ndim:数组的轴(维度)个数。例如:运行结果如下:print(arr1.ndim)2 ndarray.size:数组元素的总数,相当于shape中元素值的乘积。例如:运行结果如下:print(arr1.size)15 29 6.3.1 数组创建和基本属性 ndarray.itemsize:数组中每个元素的字节大小。元素为float64类型的数组的itemsize 为8(=64/8),而complex32类型的数组的itemsize为4(=32/8),它等于ndarray.dty

    20、pe.itemsize。例如:运行结果如下:print(arr1.itemsize)8 ndarray.nbytes:数组所占的空间,为itensize和size的乘积。例如:运行结果如下:print(arr1.nbytes)120 30 6.3.2 数组选取 一维数组元素的选取与Python列表的切片操作很相似。但与列表不同的是,选取的数据组成的新数组与原数组共享一个内存存储空间,即更改新数组中某个元素的值,原数组也会产生相应变化。下面列举几种常见的选取方式。一维数组元素的选取 单一元素的选取与列表、元组的选取方式相同,均采用下标的方式。例如:程序运行结果如下:import numpy as

    21、 np array(0,1,2,3,4,5,6,7,8,9)arr2=np.arange(10)0 print(arr2)print(arr20)31 6.3.2 数组选取 一维数组元素的选取 使用负数下标可以反向选择数组中的元素。例如:程序运行结果如下:print(arr2-1)9 使用切片作为下标可以选取数组中的一部分。例如:数组名称start:end:step 其中:1)start:开始索引。如省略开始索引,则开始索引值为0。2)end:结束索引。如省略结束索引,则结束索引值为数组对应元素最大索引值。3)step:步长。如省略步长,则步长值为1。32 6.3.2 数组选取 一维数组元素的

    22、选取例如:#选取索引为0(包含0)到索引为2(不包含2)的元素且步长为1(即第1个和第2个元素)print(arr20:2:1)#选取索引为0(包含)到索引为10(不包含)的元素且步长为2(即第1、3、5、7、9个元素)print(arr20:10:2)#从索引为1的元素且步长为2选取元素 print(arr21:2)#从索引为1的元素开始选取元素 程序运行结果如下:print(arr21:)0 1#选取索引为0到2之间的元素 0 2 4 6 8 print(arr2:2:1)1 3 5 7 9#以步长为2选择数组中的元素 1 2 3 4 5 6 7 8 9 print(arr2:2)0 1#

    23、使用负数步长来翻转数组 0 2 4 6 8 print(arr2:-1)9 8 7 6 5 4 3 2 1 033 6.3.2 数组选取 多维数组的选取多维数组的选取仍然基于上述方法。但在复杂的选取中,则需要将上述方法配合使用。例如创建一个三维数组,包含0至23的整数共24个元素,尺寸为234,选择其第1层第1行第1列的元素。import numpy as np 程序运行结果如下:arr3=np.arange(24).reshape(2,3,4)array(0,1,2,3,print(arr3)4,5,6,7,print(arr30,0,0)8,9,10,11,12,13,14,15,16,1

    24、7,18,19,20,21,22,23)034 6.3.2 数组选取 多维数组的选取选取全部行或列的元素,可以将行或列的下标用冒号“:”代替,或省略该维度。若需要选取所有层的某列,即不指定层号和行号,可以使用三个点表示。例如:程序运行结果如下:print(arr30,:,:)array(0,1,2,3,print(arr30)4,5,6,7,print(arr30,1)8,9,10,11)print(arr3:,1)#选取所有层的第2行,而不指定层号和列号 array(0,1,2,3,print(arr30,:,-1)#选取第1层的最后1列 4,5,6,7,print(arr3.,1)#选取所

    25、有层的第2列 8,9,10,11)array(4,5,6,7)array(4,5,6,7,16,17,18,19)array(3,7,11)array(1,5,9,13,17,21)35 6.3.2 数组选取 多维数组的选取若需要间隔地选取元素,则可以使用步长。如果在多维数组中执行反向选取一维数组的指令,将在最前面的维度上翻转元素的顺序。例如:程序运行结果如下:print(arr30,1,:2)array(4,6)print(arr30,:2,:2)array(0,2)print(arr30,:-1,-1)#反向选取第1层的最后1列 8,10)print(arr3:-1)#反向选取第1层 ar

    26、ray(11,7,3)array(12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11)36 6.3.2 数组选取 布尔型索引NumPy的数组支持布尔型的索引,即可以使用一个返回布尔值的表达式作为数组的索引内容。例如,有一个用于存储数据的数组以及一个布尔值数组。select=np.array(True,False,False,True,False,False,False)data=np.array(-0.59108215,0.47462331,1.48256429,0.63585932,-1.22165659,1.52967

    27、449,-0.47629308,1.14733078,0.55412323,1.26535837,0.5726996,-0.07392482,-0.85580039,1.36760135,-0.88839855,-0.03639106,1.21625468,0.99873733,0.73710729,0.21114635,0.95096753,-2.17702156,0.47864476,-0.18437025,1.72211463,-0.75815045,0.42090403,0.31997413)则可以使用布尔值数组作为数据数组的索引,但需要注意两个数组维度要相符。print(datase

    28、lect)程序运行结果如下:array(-0.59108215,0.47462331,1.48256429,0.63585932,-0.85580039,1.36760135,-0.88839855,-0.03639106)37 6.3.2 数组选取 布尔型索引 还可以继续在布尔值索引的基础上进行列索引。例如:print(dataselect,2:)print(dataselect,3)程序运行结果如下:array(1.48256429,0.63585932,-0.88839855,-0.03639106)array(0.63585932,-0.03639106)38 6.3.2 数组选取 花

    29、式索引 在布尔值索引的基础上,NumPy数组还提供了花式索引方式,即将数组作为索引以指定的顺序提取指定行和列的元素。【例6-5】创建数组实现花式索引。参考程序如下:运行结果如下:arr4=np.arange(1,29).reshape(7,4)array(1,2,3,4,print(arr4)5,6,7,8,#按照指定的顺序返回指定的行 9,10,11,12,print(arr44,1,3,5)13,14,15,16,#返回指定的行与列 17,18,19,20,print(arr44,1,5:,0,2,3)21,22,23,24,#返回指定位置的元素 25,26,27,28)print(arr

    30、44,1,5,0,2,3)array(17,18,19,20,5,6,7,8,13,14,15,16,21,22,23,24)array(17,19,20,5,7,8,21,23,24)array(17,7,24)39 6.3.3 数组操作 替换操作 np.where(conditions,x,y):查找矩阵中满足一定条件的元素,然后全部替换为设定的值。如果conditions成立,则数组中的元素变为x值,否则数组中的元素变为y值,但是替换过程不会更改原始数组。例如:程序运行结果如下:import numpy as np array(0,1,0,1)arr5=np.array(2,6,2,9)

    31、array(2,6,2,9)#将大于2的数组元素替换为1,小于等于2的元素替换为0 array(0,1,2,arr6=np.where(arr52,1,0)3,4,5,print(arr6)6,7,8)print(arr5)array(0,0,0,#二维数组(矩阵)0,1,1,arr7=np.arange(9).reshape(3,3)1,1,1)print(arr7)#将大于3的数组元素替换为1,小于3的数组元素替换为0 arr8=np.where(arr73,1,0)print(arr8)40 6.3.3 数组操作 替换操作 np.astype():本函数和np.where()函数的使用方

    32、法类似,但是效率更高一些。例如:程序运行结果如下:print(arr52)array(False,True,False,True)print(arr52).astype(int)array(0,1,0,1)print(arr72).astype(int)array(0,0,0,1,1,1,1,1,1)排序操作 通过sort()函数对数组进行排序,具体语法格式为:np.sort(a,axis=-1,kind=quicksort,order=None)其中:a:所需排序的数组。axis:可选参数,取值整数或None。若axis为None,数组先偏平化(降维)再排序。若axis=n,表示沿着数组的轴

    33、n排序。默认axis为-1,表示沿数组的最后一条轴排序。kind:排序算法,取值为quicksort、mergesort、heapsort分别表示快速排序、合并排序、堆排序。默认取值为quicksort。order:在结构化数组中,可以指定按某个字段排序。41 6.3.3 数组操作 排序 例如:程序运行结果如下:import numpy as np array(0,1,1,2,2,3,4,5,6,7,8,9)arr1=np.array(3,2,1,6,2,1,0,9,4,8,5,7)array(2,3,1,6,1,2,0,9,4,8,5,7)arr2=np.sort(arr1,axis=Non

    34、e)array(0,1,1,2,2,6,3,7,4,8,5,9)arr3=np.sort(arr1,axis=-1)#对每行内的元素排序 array(2,3,1,6,1,2,0,9,4,8,5,7)arr4=np.sort(arr1,axis=0)#对每列内的元素排序 arr5=np.sort(arr1,axis=1)#对每行内的元素排序 print(arr2)print(arr3)print(arr4)print(arr5)42 6.3.3 数组操作 排序通过argsort()函数对数组进行间接排序,返回数组排序后元素对应的位置整数组成的索引数组(又称索引器)。具体语法格式为:np.args

    35、ort(a,axis=-1,kind=quicksort,order=None)例如:运行结果如下:arr1=np.array(4,2,5,7,3)array(1,4,0,2,3,dtype=int64)arr2=np.argsort(arr1)array(1,0,0,1,dtype=int64)#数组arr2中的元素表示的是数组arr1中的元素的索引,5个元素的索引分别为0-4 array(0,0,1,1,dtype=int64)#arr20=1表示原数组arr1的最小元素的索引为1#arr21=4表示原数组arr的第2小元素的索引为4 print(arr2)arr3=np.array(3,

    36、2,5,7)print(np.argsort(arr3,axis=1)print(np.argsort(arr3,axis=0)#axis=1,表明按照行进行排序,即是对3,2进行排序,所以得到索引为1,0#axis=0,表明按照列进行排序,即是对3,5进行排序,所以得到索引为0,143 6.3.3 数组操作 重塑 通过reshape()函数改变数组的形状,具体语法格式为:reshape(a,newshape,order=C)其中:a:要改变的数组。newshape:要转换成何种形式的新数组。order:表示按照该索引的顺序重新排列数组,默认参数是C,即按行填充,当参数为F时,则按列填充。44

    37、 6.3.3 数组操作 重塑【例6-6】创建数组,使用函数reshape(a,newshape,order=C)进行数组重塑。参考程序如下:程序运行结果如下:arr4=np.arange(8)array(0,1,2,3,4,5,6,7)print(arr4)array(0,1,2,3,print(np.reshape(arr4,(2,4),order=C)4,5,6,7)print(np.reshape(arr4,(2,4),order=F)array(0,2,4,6,1,3,5,7)resize()方法与reshape()类似,都可以改变数组的形状,但是resize()方法没有order参数

    38、,默认按照行的顺序填充。如果目标形状中元素数量与原数组不同,resize()会强制进行转换。如果目标形状行数超出,则会开始重复填充原数组的内容,实现形状大小的自动调整而不会报错。45 6.3.3 数组操作 重塑【例6-7】使用resize()进行数组重塑。参考程序如下:程序行结果如下:arr5=np.resize(arr4,(2,4)array(0,1,2,3,print(arr5)4,5,6,7)arr6=np.resize(arr4,(3,4)array(0,1,2,3,print(arr6)4,5,6,7,0,1,2,3)通过ravel的方法将数组拉直,即将多维数组降为1维数组。例如:运

    39、行结果如下:print(arr6.ravel()array(0,1,2,3,4,5,6,7,0,1,2,3)通过flatten的方法将数组拉直。例如:运行结果如下:print(arr6.flatten()array(0,1,2,3,4,5,6,7,0,1,2,3)46 6.3.3 数组操作 转置Transpose()函数和T属性的效果一样,均可以获得一个数组的转置矩阵。【例6-8】分别使用transpose()函数和T属性对数组进行转置。参考程序如下:运行结果如下:import numpy as np array(0,1,2,3,4,arr7=np.arange(15).reshape(3,5

    40、)5,6,7,8,9,print(arr7)10,11,12,13,14)#使用transpose()函数进行转置 array(0,5,10,print(arr7.transpose()1,6,11,#使用T属性进行数组转置 2,7,12,print(arr7.T)3,8,13,4,9,14)array(0,5,10,1,6,11,2,7,12,3,8,13,4,9,14)47 6.3.3 数组操作 合并使用np.concatenate()函数能够一次完成多个数组的拼接,具体语法格式为:np.concatenate(a1,a2,),axis=0)其中,a1,a2,是数组类型的参数。【例6-9】

    41、一维数组的拼接。参考程序如下:arr8=np.array(1,2,5)arr9=np.array(10,12,15)arr10=np.array(20,22,25)print(np.concatenate(arr8,arr9,arr10),axis=0)#axis=0为默认值,可省略不写,对于一维数组的拼接,axis的值不影响最后的结果。程序运行结果如下:array(1,2,5,10,12,15,20,22,25)48 6.3.3 数组操作 合并【例6-10】多维数组的拼接。参考程序如下:程序运行结果如下:arr11=np.array(1,2,3,4,5,6)array(1,2,3,arr12

    42、=np.array(11,21,31,7,8,9)4,5,6,print(np.concatenate(arr11,arr12),axis=0)11,21,31,print(np.concatenate(arr11,arr12),axis=1)7,8,9)#axis=1表示对应行的数组进行拼接 array(1,2,3,11,21,31,4,5,6,7,8,9)使用np.hstack()函数实现水平方向上组合,与np.concatenate(a,b),axis=1)方法相类似,但必须满足两个数组的行数相同。49 6.3.3 数组操作 合并【例6-11】分别使用np.hstack()和np.con

    43、catenate(a,b),axis=1)函数在水平方向上进行数组合并。参考程序如下:运行结果如下:arr13=np.arange(9).reshape(3,3)array(0,1,2,print(arr13)3,4,5,arr14=arr13*2 6,7,8)print(arr14)array(0,2,4,print(np.hstack(arr13,arr14)6,8,10,print(np.concatenate(arr13,arr14),axis=1)12,14,16)array(0,1,2,0,2,4,3,4,5,6,8,10,6,7,8,12,14,16)array(0,1,2,0,

    44、2,4,3,4,5,6,8,10,6,7,8,12,14,16)50 6.3.3 数组操作 合并 使用np.vstack()函数实现垂直方向上组合,与np.concatenate(a,b),axis=0)方法相类似,但必须满足两个数组的列数相同。【例6-12】分别使用np.vstack()和np.concatenate(a,b),axis=1)函数在垂直方向上进行数组合并。参考程序如下:运行结果如下:print(np.vstack(arr13,arr14)array(0,1,2,print(np.concatenate(arr13,arr14),axis=0)3,4,5,6,7,8,0,2,4

    45、,6,8,10,12,14,16)array(0,1,2,3,4,5,6,7,8,0,2,4,6,8,10,12,14,16数据运算 6.4本节介绍通用函数(Universal Functions,即ufuncs)的相关内容52 6.4.1 算数运算 NumPy的基本算术运算符+、-和*隐式关联着通用函数add、subtract和multiply,即对NumPy数组使用这些运算符时,对应的通用函数将自动被调用。除法包含的过程则较为复杂,在数组的除法运算中涉及3个通用函数divide、true_divide和floor_division,以及2个对应的运算符/和/。NumPy中还有许多聚合函数,

    46、如最小值、最大值、中位数、均值、方差、标准差等。需要注意的是,NumPy数组间或数组与标量间的运算作用于数组中的每一个元素,而非矩阵运算,即一个数组中的每个元素分别与另一个数组中相同下标的元素或标量进行运算。函数np.add(arr1,arr2):相加函数。例如,创建两个数组,分别采用加法运算符和相加函数进行运算。53 6.4.1 算数运算 arr1=np.arange(3,8)运行结果如下:arr2=np.arange(1,6)arr1=3 4 5 6 7 print(arr1=,arr1)arr2=1 2 3 4 5 print(arr2=,arr2)arr1+arr2=4 6 8 10

    47、12#采用加法运算符 array(4,6,8,10,12)print(arr1+arr2=,arr1+arr2)#采用相加函数 print(np.add(arr1,arr2)函数np.subtract(arr1,arr2):相减函数。例如,分别采用减法运算符和相减函数进行运算。#采用减法运算符 运行结果如下:print(arr1-arr2=,arr1-arr2)arr1-arr2=2 2 2 2 2#采用相减函数 array(2,2,2,2,2)print(np.subtract(arr1,arr2)函数np.multiply(arr1,arr2):相乘函数。例如,分别采用乘法运算符和乘法函数

    48、进行运算。#采用乘法运算符 运行结果如下:print(arr1*arr2=,arr1*arr2)arr1*arr2=3 8 15 24 35#采用乘法函数 array(3,8,15,24,35)print(np.multiply(arr1,arr2)54 6.4.1 算数运算 函数np.divide(arr1,arr2):相除函数。例如,分别采用除法运算符和除法函数进行运算。#采用除法运算符 运行结果如下:print(arr1/arr2=,arr1/arr2)arr1/arr2=3.2.1.66666667 1.5 1.4#采用相除函数 array(3.,2.,1.66666667,1.5,1

    49、.4)print(np.divide(arr1,arr2)统计运算中常见的聚合函数有:最小值、最大值、中位数、均值、方差、标准差、求和等。【例6-13】创建数组,计算数组中每个元素的平方及平方根、所有元素的最小值、每一列最大值、所有元素的均值、方差、每一行的标准差,再分别对列、行、全部元素求和,最后以另一个数组为权重,求原数组的加权平均。55 6.4.1 算数运算 统计运算中常见的聚合函数有:最小值、最大值、中位数、均值、方差、标准差、求和等。参考程序如下:arr3=5-np.arange(1,13).reshape(4,3)print(arr3)print(arr3*2)print(np.s

    50、qrt(arr3)print(np.min(arr3)print(np.max(arr3,axis=0)print(np.mean(arr3)print(np.var(arr3)print(np.std(arr3,axis=1)print(arr3.sum(axis=None)print(arr3.sum(axis=0)print(arr3.sum(axis=1)arr4=np.arange(12).reshape(4,3)print(np.average(arr3,weights=arr4)56 6.4.1 比较运算 np.greater(arr5,arr6)函数,比较数组arr5是否大于数

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《Python机器学习》教学课件—06NumPy数据分析.pptx
    链接地址:https://www.163wenku.com/p-4538850.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库