Python数据分析基础第4章NumPy-数组与矢量计算-课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python数据分析基础第4章NumPy-数组与矢量计算-课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 数据 分析 基础 NumPy 数组 矢量 计算 课件
- 资源描述:
-
1、第4章 NumPy 数组与矢量计算学习目标:l 了解NumPy和SciPy作用与安装。l 掌握创建数组对象方法。l 掌握数组的索引、切片和其他操作。l 掌握数组的运算和通用函数使用。l 掌握NumPy矩阵创建、计算和操作。l 掌握随机数生成的方法。NumPy(Numerical Python的缩写)是一个开源的Python科学计算库,它是一个由多维数组对象和用于处理数组的例程集合组成的库。1.NumPy的基本功能如下。提供了一个具有矢量算术运算和复杂广播功能的快速且节省空间的多维数组对象ndarray。用于对数组执行元素级计算以及直接对数组执行数学运算的函数。用于读写硬盘上基于数组的数据集的工
2、具,以及用于操作内存映射文件的工具。提供了线性代数、随机数生成以及傅立叶变换功能。用于集成由C、C+、Fortran等语言编写的代码的工具。在数据分析方面,NumPy还可作为在算法之间传递数据的容器。4.1.1 NumPy简介 2.在Python中使用NumPy的优势 在数值计算时,使用NumPy能够直接对数组和矩阵进行操作。NumPy中数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构。NumPy的大部分代码都是用C语言写成的,这使得NumPy比纯Python代码高效得多。NumPy通常与SciPy(Scientific Python)和Matplotlib(绘图库)一起
3、使用。NumPy是开源的库。4.1.1 NumPy简介 1.测试Python环境中是否安装了NumPy 在Windows操作系统下,按【win】+【r】键,进入cmd命令窗口,输入“python”命令,按回车键,进入Python命令窗口。在Python命令窗口中输入“from numpy import*”命令,如果在命令窗口中出现“ModuleNotFoundError:No module named numpy”的错误提示,则需要安装NumPy。2.在Windows操作系统下安装NumPy方法3.PyCharm 安装 NumPy方法 4.1.2 NumPy安装与测试 SciPy是世界著名的P
4、ython开源科学计算库,它是建立在NumPy基础之上,增加了众多的数学、科学以及工程计算中常用的库函数。它增加的功能包括插值、积分、最优化、统计、线性代数、傅里叶变换、图像处理和常微分方程求解器等一些专用函数。与NumPy库相同,SciPy也是需要单独安装,安装步骤如下。1.测试Python环境中是否安装了SciPy 2.在Windows操作系统下安装SciPy 3.PyCharm 安装SciPy4.1.3 SciPy 简介及其安装与测试 在科学计算中,常常会遇到数组和矩阵的计算,如有两个一维数组x和y,其中,x的值为0-10的整数,y的值为0-10的整数的平方,需要计算x与y的一维数组相加
5、。1.利用Python的循环语句来实现两个一维数组相加示例2.利用NumPy实现两个一维数组相加的示例3.比较两种方法的计算速度4.1.4 NumPy 的简单应用:一维数组相加 NumPy提供了两种基本对象:ndarray(N-dimensional Array Object)和ufunc(Universal Function Object)。其中ndarray是一个多维数组对象,而ufunc则是能够对数组进行处理的函数。NumPy数组一般是同质的(但特殊的数组类型可以是异质的),即数组中所有元素的数据类型必须一致。NumPy数组的下标也是从0开始的。数组元素的数据类型用数据类型对象表示,数据
6、类型对象是numpy.dtype类的实例。4.2.1 创建数组对象 利用NumPy提供的array()函数可以创建一维或多维数组,其基本语法格式如下。numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)其中:object:表示想要创建数组,无默认。dtype:表示数组的所需要的数据类型,默认为None。ndmin:指定生成数组应该具有的最小维数,默认为None。在创建数组时,object是唯一必要的参数,其余参数均为默认的可选参数。4.2.1 创建数组对象创建数组后,选取数组中的某个特定元素的方法如下。数
7、组名m,n 其中m 和 n 为数组元素下标。注意,数组的下标是从0开始。例如在example4-3示例中,创建了一个二维数组arr2,arr2数组元素及与其对应的位置如表4-1、表4-2所示。4.2.2 选取数组元素数组的属性及说明如表4-3 所示4.2.3 数组的属性 说明,数组的shape属性不仅能显示数组的行数或列数,而且还可以调整数组的行和列的大小。1.使用arange()函数创建一维数组2.使用linspace()函数创建数组3.使用logspace()函数创建等比数列4.使用zeros()、eye()、identity()、diag()和ones()函数创建特殊数组5.使用asar
8、ray()函数创建数组6.使用empty()函数创建数组 具体示例见教材。4.2.4 创建数组的其他方法 Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy添加了很多其他的数据类型。在实际应用中,为了提高计算结果的准确度,需要使用不同精度的数据类型,并且不同的数据类型所占用的内存空间也是不同的。在NumPy中,大部分数据类型名是以数字结尾的,这个数字表示其在内存中占用的位数。1.NumPy中支持的数据类型 见表4-4 NumPy的基本数据类型及描述4.2.5 Numpy的数据类型2数组的数据类型转换 数组有一个 dtype 属性,通过该属性可
9、以查看数组的数据类型,方法是数组名.dtype。而数组的数据类型在创建数组时就已经通过dtype 参数确定了,如果想实现数组中数值类型的转换可采用 astype()函数。astype()函数的格式如下。数组名.astype(numpy.数据类型)4.2.5 Numpy的数据类型3.自定义数据类型 自定义数据类型是一种异构数据类型,可以将它看作是电子表格的标题行的数据。例如,创建一个存储产品价格信息的数据类型。其中,产品名称是用字符串表示的长度为50个字符,产品价格是用32位单精度浮点数表示。那么,使用自定义数据类型来创建数组的方法如下。(1)使用dtype创建自定义数据类型 (2)查看数据类型
10、,可直接查看或使用numpy.dtype()函数查看 (3)使用array()函数创建数组时,使用dtype指定数组的数据类型为pro_type(自定义数据类型)具体示例见教材4.2.5 Numpy的数据类型1.一维数组的索引与切片 一维数组的操作类似于Python中列表(list)类型的操作。如:一维数组 arr=a0,a1,a2,a3,a4,an 数组索引(下标)0 1 2 3 4 n(1)利用数组索引(下标)获取指定元素 获取数组中指定元素的方法如下。数组名索引(下标)例如,获取数组arr中第4个元素a3用arr3即可。4.3.1 数组的索引和切片1.一维数组的索引与切片(2)数组的切片
11、 截取数组中某个范围之间元素的方法如下。数组名start:end:step 其中,start表示截取数组中开始元素的索引(下标),end表示截取数组中结束元素的索引(下标),但是不包括end索引(下标)所指定的元素,step表示步长。例如,截取arr数组中第2个元素至第5个元素,包括第5个元素,则使用arr1:5。4.3.1 数组的索引和切片2.二维数组的索引与切片 二维数组是由行和列组成,二维数组中的每一行相当于一维数组。二维数组中元素的索引是由该元素所在的行下标和列下标组成,即由元素的行索引和列索引组成。如arr是二维数组,该二维数组元素用arr行索引,列索引表示,该二维数组中元素与索引的
12、对应关系如下。4.3.1 数组的索引和切片(1)利用二维数组的行索引和列索引获取指定元素 方法:数组名行索引,列索引 例如,获取二维数组中第2行第2列的元素,用arr1,1即可。(2)二维数组的切片 截取二维数组中某个区域之间元素的方法:数组名rows_start:rows_end:rows_step,cols_start:cols_end:cols_step 其中:rows_start:rows_end表示截取数组中元素的行索引范围,cols_start:cols_end 表示截取数组中元素的列索引范围,但不包括 rows_end行索引和cols_end列索引所指定的元素,rows_step
13、表示行索引的步长,cols_step表示列索引的步长。4.3.1 数组的索引和切片 示例代码example4-5见教材3.整数索引 整数索引就是从两个序列的对应位置取出两个整数来组成行下标和列下标。示例代码example4-6见教材。4.布尔值索引 当结果对象是布尔运算(例如比较运算符)的结果时,将使用布尔值索引。示例代码example4-7见教材。4.3.1 数组的索引和切片 1.用元组设置维度修改数组的形状方法:数组名.shape=(x0,x1,x2,xn)参数x0-xn表示数组中每个维度上的大小,例如arr.shape=(3,4)表示将arr数组修改成3行4列数组,利用该方法会改变原数组
14、arr的形状。2.reshape()函数 用reshape()函数修改数组的形状方法:数组名.reshape(x0,x1,x2,xn)参数x0-xn表示数组中每个维度上的大小。例如arr.reshape(3,4)生成一个3行4列新数组,而原数组arr不会改变。如果指定的维度和数组的元素数目不吻合,则函数将抛出异常。4.3.2 修改数组形状3.resize()函数 该函数是返回指定大小的新数组。如果新数组的大小大于原始数组的大小,则包含原始数组中的元素的重复副本,该函数修改数组形状方法:数组名.resize(x0,x1,x2,xn)参数x0-xn表示数组中每个维度上的大小。例如arr.resiz
15、e(3,4)表示将arr数组修改成3行4列数组,原数组arr形状改变。这种方法与用shape属性修改数组的形状相似。4.修改数组的形状示例代码example4-8见教材。4.3.2 修改数组形状1.ravel()函数 在NumPy中,可以使用ravel()函数将多维数组展平(即变成一维数组),展平数组元素的顺序通常是“C风格”的,就是以行为基准。用ravel()函数展平数组的方法:数组名.ravel()例如arr.ravel()返回将arr数组展平成一维新数组视图,原数组arr不改变。2.flatten()函数 flatten()函数也是将多维数组展平,用flatten()函数展平数组的方法:
16、数组名.flatten()例如arr.flatten()表示将arr数组展平成一维新数组,原数组arr不改变。3.数组的展平示例代码example4-9见教材。4.3.3 数组的展平1.transpose()函数 该函数可实现翻转给定数组的维度,并且返回数组的1个视图(view)。使用transpose()函数的方法:numpy.transpose(arr)参数arr表示是要转置的数组。例如arr是一个3行5列数组,numpy.transpose(arr)函数就会返回arr数组转置为5行3列的数组视图,而原数组arr不改变。2.ndarray.T函数 该函数是属于ndarray类,作用类似于n
17、umpy.transpose4.3.4 数组转置和轴对换3.rollaxis()函数 该函数可实现向后滚动特定的轴,直到1个特定位置。使用rollaxis()函数方法:numpy.rollaxis(arr,axis,start)该函数中参数arr表示数组,axis表示要向后滚动的轴,其它轴的相对位置不会改变,start表示滚动到特定位置,默认为零,表示完整的滚动。4.swapaxes()函数 该函数是交换数组的两个轴。对于1.10之前的NumPy 版本,会返回交换后数组的视图。使用swapaxes()函数的方法:numpy.swapaxes(arr,axis1,axis2)参数arr表示数组,
展开阅读全文