《人工智能技术开发框架》课件-第3章 数据处理与分析工具_第1页
《人工智能技术开发框架》课件-第3章 数据处理与分析工具_第2页
《人工智能技术开发框架》课件-第3章 数据处理与分析工具_第3页
《人工智能技术开发框架》课件-第3章 数据处理与分析工具_第4页
《人工智能技术开发框架》课件-第3章 数据处理与分析工具_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

人工智能技术开发框架计算机与软件学院第三章数据处理与分析工具01AI应用开发概述02FlaskWEB应用开发03人工智能技术与应用04机器学习框架Scikit-Learn05深度学习框架Tensorflow203数据处理与分析工具数据处理与分析数据处理数据可视化数据处理工具NumpyPandasNumpy创建数组查看数组维度和类型数组元素的访问及索引Numpy的运算数组的维度变换数组的排序及索引数组的文件操作(数据文件存储、数据文件导入)Numpy是Python科学计算的基础库,主要提供了高性能的N维数组实现以及计算能力,还提供了和其他语言如C/C++集成的能力,此外还实现了一些基础的数学算法,如线性代数相关、傅里叶变换及随机数生成等。Numpy:创建数组通过python的list列表创建数组通过Numpy的函数创建数组Numpy:通过python的list列表创建数组a=np.array([1,2,3,4])b=np.array([[1,2],[3,4],[5,6]])#查看array的属性,包括数据的维度和类型print(b.ndim)print(b.shape)print(b.dtype)Numpy:通过Numpy的函数创建数组#创建等差一维数组,步长为1c=np.arange(10)print("c=",c)#创建等差一维数组,[0,2]分成11等分后的数组d=np.linspace(0,2,11)print("d=",d)#创建3×3的全1数组e=np.ones((3,3))print("e=",e)#创建3×6的全零数组f=np.zeros((3,6))print("f=",f)#创建4×4的对角数组g=np.eye(4)print("g=",g)#创建6×4的随机数组h=np.random.randn(6,4)print("h=",h)Numpy:数组元素的访问及索引——1维数组a=np.arange(10)print(a)print(a[0],a[3],a[-1])print(a[:4])print(a[3:7])print(a[6:])print(a[2:8:2])#3个参数表示起始、结束和步长,不包含结束位置print(a[2::2])#结束位置可以省略print(a[::3])#开始和结束都省略Numpy:数组元素的访问及索引——2维数组a=np.arange(0,51,10).reshape(6,1)+np.arange(6)#一维向量,1×6数组矩阵print(np.arange(0,51,10))#转变成6×1数组矩阵print(np.arange(0,51,10).reshape(6,1))#一维向量,1×6数组矩阵print(np.arange(6))#两个矩阵相加运算print(a)#以下为对二维数组矩阵进行索引切片操作print(a[0,0],a[2,-1])print(a[0,2:5])print(a[:3,3:])print(a[2,:])print(a[:,3])#结果应该是列向量,Numpy自动转换行向量print(a[:,::2])print(a[::2,::3])Numpy:Numpy的运算数组和标量的运算数组与数组之间的运算矩阵的内积运算数组的比较运算数组的内置函数数组的统计运算Numpy:数组和标量的运算最简单的数值计算是数组和标量进行计算,计算过程是直接把数组里的元素和标量逐个进行计算a=np.arange(6)print(a)print(a+5)#数组和标量加法#创建1~5之间的20个随机整数,形成一维向量,即1×20的数组矩阵b=np.random.randint(1,5,20)print(b)#将1×20的数组矩阵构建出4×5的数组矩阵c=b.reshape(4,5)print(c)print(c*3)#数组和标量乘法Numpy:数组与数组之间的运算数组和数组的运算,如果数组的维度相同,那么在组里对应位置进行逐个元素的数学运算。#创建5×4数组矩阵,元素是1~5随机整数a=np.random.random_integers(1,5,(5,4))print(a)#创建一个5×4的数组矩阵,每个元素都是1b=np.ones((5,4),dtype=int)print(b)#数组加法a+bprint(a+b)#创建3×4数组矩阵,元素是1~5的随机整数c=np.random.random_integers(1,5,(3,4))print(c)#创建3×4的数组矩阵,元素是1~5随机整数d=np.random.random_integers(1,5,(3,4))print(d)#数组相乘,逐元素相乘,不是矩阵内积运算c*dprint(c*d)Numpy:矩阵的内积运算

#创建一个3×2的数组矩阵,每个元素是1~5的随机整数,random_integers函数包含末尾数5a=np.random.random_integers(1,5,(3,2))print(a)#创建一个2×3的数组矩阵,每个元素是1~5的随机整数b=np.random.random_integers(1,5,(2,3))print(b)#矩阵内积np.dot(a,b)print(np.dot(a,b))数组的乘法是对应元素相乘,不是矩阵内积,矩阵内积使用的是np.dot()函数Numpy:数组的比较运算数组可以直接进行比较,返回一个同维度的布尔数组。针对布尔数组,可以使用all()/any()函数来返回布尔数组的标量值a=np.array([1,2,3,4])b=np.array([4,2,2,4])print(a==b)print(a>b)print((a==b).all())#必须布尔矩阵中所有元素均为True时结果才为Trueprint((a==b).any())#只要布尔矩阵中有任一元素为True时结果就为TrueNumpy:数组的内置函数a=np.arange(6)print(a)#求余弦print(np.(a))cos#求指数print(np.exp(a))#求平方根print(np.sqrt(a))Numpy:数组的统计运算:一维数组#创建6个元素的一维向量,元素为1~5之间随机整数a=np.random.random_integers(1,5,6)print(a)#求和print(a.sum())#求平均值print(a.mean())#求标准差print(a.std())#求最小值print(a.min())#求最大值print(a.max())#最小值元素所在的索引print(a.argmin())#最大值元素所在的索引print(a.argmax())Numpy:数组的统计运算:二维数组针对二维数组或者更高维度的数组,可以根据行或列来计算。axis参数表示坐标轴,0表示按列计算,1表示按行计算。需要特别注意的是,按列计算后,Numpy会将计算结果默认转换为行向量#创建一个6×4二维数组矩阵,每个元素的值为1~5之间的随机整数b=np.random.random_integers(1,5,(6,4))print(b)#求矩阵中所有元素的和print(b.sum())#按照矩阵的列求和,axis=0表示按列print(b.sum(axis=0))#按照矩阵的行求和,axis=1表示按行print(b.sum(axis=1))#先按照行求和,得到一个数组,再将数组的所有元素求和print(b.sum(axis=1).sum())#按照矩阵的行求每一行的最小值print(b.min(axis=1))#按照矩阵的行求每一行的最小值所对应的索引值(指的是在特定行的索引)print(b.argmin(axis=1))#按照矩阵的行求每一行的标准差print(b.std(axis=1))Numpy:数组的维度变换reshape():转换维度,变成多维数组ravel():将多维数组“摊平”,变成一维向量#创建一维向量,元素为1~3的4个整数a=np.arange(4)print(a)#打印维度信息,为(4,),即只有第1维具有4个元素,没有第2维print(a.shape)#在列上添加一个维度,纬度信息为(4,1),变成4×l数组,其自身位于第1列b=a[:,np.newaxis]print(b)#打印维度信息,为(4,1),即4×1的数组print(b.shape)#在行上添加一个维度,纬度信息为(1,4),变成l×4数组,其自身位于第1行c=a[np.newaxis,:]print(c)#打印纬度信息,为(1,4),即l×4的数组print(c.shape)#创建一维向量,元素为1~11的12个整数a=np.arange(12)print(a)#转换为4×3的二维数组b=a.reshape(4,3)print(b)#变为一维向量,转换时按照行的顺序进行排列,第2行接在第1行的末尾print(b.ravel())Numpy:数组的排序及索引#创建6×4的二维数组,元素为1~10的10个随机整数a=np.random.random_integers(1,10,(6,4))print(a)#按行独立排序,返回一个备份b,即a不变b=np.sort(a,axis=1)print(b)#按列排序,直接把结果保存到当前数组a.sort(axis=0)print(a)#创建由6个1~10的随机整数构成的一维向量a=np.random.random_integers(1,10,6)#打印排序前的aprint(a)#此时的a仍然是排序前的数组idx=a.argsort()#打印排序前的aprint(a)#假如将a排序后,a中各个元素在排序前的索引值print(idx)#a仍然是原始的排序前的a,而a[idx]是一个虚拟的排序后的aprint(a[idx])#将虚拟的排序后的数组,赋值给b,使得b成为物理上排序后的数组b=a[idx]#a仍然是排序前的数组,而b是排序后的数组print(b)#由于a并没有物理上的排序操作,因此a仍然是排序前的a,下面打印出排序前的aprint(a)Numpy:数组的文件操作:文件存储、导入Numpy数组作为文本文件,可以直接保存到文件系统里,也可以从文件系统里读取出数据,也可以直接保存为Numpy特有的二进制格式a=np.arange(15).reshape(3,5)#将数组保存文本文件np.savetxt("test.txt",a)#保存时将整型转换成浮点型#读取文本文件,恢复成数组b=np.loadtxt("test.txt")print(b)#将数组保存为二进制文件np.save("test.npy",a)#读取二进制文件,恢复成数组c=np.load("test.npy")print(c)PandasPandas的基本数据结构:Series数据结构:行数据,一维数组DataFrame数据结构:行列数据,二维数组,每一行或者列都是Series结构。DataFrame里的数据实际是用Numpy的array对象来保存的。Pandas是一个强大的时间序列数据处理工具包,最初开发的目的是为了分析财经数据,现在已经广泛应用在Python数据分析领域中#Series对象可以理解为一维数组s=pd.Series([4,2,5,0,6,3])print(s)#DataFrame是二维数组对象df=pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))print(df)#打印某一行数据print(df.iloc[0])#打印某一列数据print(df.A)#查看数据的维度信息print(df.shape)#查看前几行数据df.head(3)#查看后几行数据df.tail(2)#查看行索引信息print(df.index)#查看列索引信息print(df.columns)#查看数据的统计信息,算出每列的元素个数、平均值、标准差、最小值、最大值及几种中位数的值print(df.describe())Pandas:数据映射通过Series.map()函数对数据进行转换映射#创建一个Series对象aa=pd.Series(['Java','C','C++'])print(a)#对a中的数据进行映射转换b=a.map({'Java':'11','C':'22','C++':'33'})print(b)Pandas:数据排序通过DataFrame.sort_index()函数对索引进行排序,通过DataFrame.sort_values()对数值进行排序#DataFrame是二维数组对象df=pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))print(df)#根据列名称进行逆序排列,axis=1表示按列print(df.sort_index(axis=1,ascending=False))#根据B这一列的数据从小到大进行排序print(df.sort_values(by='B'))Pandas:数据访问#DataFrame是二维数组对象df=pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))print(df)#获取原始数据,不包含行号、列名称,只包含纯数据print(df.values)#通过行索引范围来访问特定几行的数据print(df[3:5])#选择A、B、D这3列数据:print(df[['A','B','D']])#通过标签来选择某个元素print(df.loc[3,'A'])根据行索引,或者列名称来访问多个数据,或者通过数组索引访问特定元素#通过数组索引来访问某个元

温馨提示

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

评论

0/150

提交评论