《Python机器学习》教学课件—06NumPy数据分析.pptx
- 【下载声明】
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
展开阅读全文