第3章 科学计算Numpy库_第1页
第3章 科学计算Numpy库_第2页
第3章 科学计算Numpy库_第3页
第3章 科学计算Numpy库_第4页
第3章 科学计算Numpy库_第5页
已阅读5页,还剩31页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第3章科学计算Numpy库

本章内容3.1Numpy数组的使用3.2Numpy中矩阵对象(matrix)3.3NumPy中的数据统计分析3.1Numpy数组的使用3.1Numpy数组的使用Numpy(NumericalPython的简称)是高性能科学计算和数据分析的基础包。Numpy是Python的一个科学计算的库,提供了矩阵运算的功能。在NumPy中,最重要的对象是称为ndarray的N维数组类型,它是描述相同类型的元素集合。darray中的每个元素都是数据类型对象(dtype)的对象。3.1.1Numpy数组创建3.1.2Numpy数组中的元素访问3.1.3Numpy数组的算术运算3.1.4Numpy数组的形状(shape)操作3.1.1Numpy数组创建NumPy数组是一个多维数组对象,称为ndarray。ndarray的秩(rank)ndarray.ndim轴的数量,即数组的维数ndarray的轴(axes)每一个线性数组称为一个轴(axes)每一个NumPy数组:NumPy数组的下标从0开始;同一个NumPy数组中所有元素的类型必须是相同的。对于一维数组,axis=0代表列对于二维数组,axis=0代表行,axis=1代表列对于三维数组,axis=0代表页,axis=1代表行,axis=2代表列即对于多维数组,axis数字越小,维度越高2、创建数组从Python列表和元组创建一维数组3.1.1Numpy数组创建从Python列表和元组创建多维数组创建数组时指定数组元素的数据类型2、创建数组使用NumPy函数创建特殊数组使用zeros()函数创建全零数组使用ones()函数创建全1数组3.1.1Numpy数组创建NumPy数组不能像Python列表一样增长。数组的末端没有留下任何便于快速附加元素的空间:先使用Python列表,准备好之后再将其转换为NumPy数组,使用np.zeros或np.empty预先留下必要的空间,为添加新元素做准备也可以使用np.zeros_like等创建在形状和元素类型上与已有数组匹配的空数组2、创建数组使用arange函数arange([start,]stop[,step,])类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值:3.1.1Numpy数组创建2、创建数组linspace()函数linspace(start,stop,num=50,endpoint=True)通过指定开始值、终值和元素个数(默认为50)来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值。3.1.1Numpy数组创建2、创建数组生成随机数数组numpy.random.randint(low,high=None,size=None,dtype=int)返回一个随机整数数组,范围从low(包括)到high(不包括),即[low,high)。如果没有写参数high,则返回[0,low)的值。3.1.1Numpy数组创建2、创建数组生成随机数数组np.random.random(size=None)np.random.rand(d0,d1,...,dn)生成[0,1)

区间随机小数或随机小数数组的则使用random.random()函数或者random.rand()函数。3.1.1Numpy数组创建3、NumPy的数据类型3.1.1Numpy数组创建名称描述bool用一个字节存储的布尔类型(True或False)inti由所在平台决定其大小的整数(一般为int32或int64)int8一个字节大小,-128至127int16整数,-32768至32767int32整数,-231

至232-1int64整数,-263

至263-1uint8无符号整数,0至255uint16无符号整数,0至65535uint32无符号整数,0至232-1uint64无符号整数,0至264-1float16半精度浮点数:16位,正负号1位,指数5位,精度10位float32单精度浮点数:32位,正负号1位,指数8位,精度23位float64或float双精度浮点数:64位,正负号1位,指数11位,精度52位complex64复数,分别用两个32位浮点数表示实部和虚部complex128或complex复数,分别用两个64位浮点数表示实部和虚部1、Numpy一维数组的索引和切片3.1.2Numpy数组中的元素访问访问描述X[i]索引第i-1个元素X[-i]从后向前索引第i个元素X[n:m]

切片,默认步长为1,从前往后索引,不包含m的元素X[-m:-n]切片,默认步长为1,从前往后索引,不包含-n的元素X[n:m:i]切片,指定i步长的由n到m的索引1020304050607080901001101201300123456789101112-13-12-11-10-9-8-7-6-5-4-3-2-1[:8][7:][:][6:-1:2]1、NumPy的索引和切片一维数组的切片3.1.2Numpy数组中的元素访问当切片不能进行时,解释器会返回一个空数组1、NumPy多维数组的索引和切片多维数组的切片多维数组在每个轴各自有一个索引,各轴索引之间由逗号分隔。当在各个轴上进行连续切片时,使用:连接头下标和尾下标;当进行不连续切片时,要给出一个指定下标组成的元组。3.1.2Numpy数组中的元素访问数组的复制copy()np.copy()np.ndarray.copy()1、Numpy数组之间算术运算Numpy数组之间的算术运算是按元素逐个运算。Numpy数组运算后将创建包含运算结果的新数组。3.1.3Numpy数组的算术运算1、Numpy数组之间算术运算NumPy中的乘法运算符*按元素逐个计算,矩阵乘法可以使用dot函数或创建矩阵对象实现。3.1.3Numpy数组的算术运算1、Numpy数组之间算术运算有些操作符如+=和*=用来更改已存在数组而不创建一个新的数组。3.1.3Numpy数组的算术运算2、Numpy数组统计运算Numpy数组的常用统计方法如下:3.1.3Numpy数组的算术运算方法(函数名)说明np.sum所有元素的和d所有元素的乘积np.cumsum元素的累积加和np.cumprod元素的累积乘积np.min最小值np.max最大值np.percentile0-100百分位数np.quantile0-1分位数np.median中位数np.average加权平均,参数可以指定weightsnp.mean平均值np.std标准差np.var方差2、Numpy数组统计运算统计运算将数组展开成一维线性列表计算。3.1.3Numpy数组的算术运算2、Numpy数组统计运算可通过指定axis参数(即数组的维)对指定的轴做相应的运算。Numpy的axis参数的用途:二维narray对象中,axis=0表示沿着0轴在列上进行计算/操作,axis=1表示沿着1轴在行上计算/操作。3.1.3Numpy数组的算术运算1、数组的形状数组的形状取决于其每个轴上的元素个数,通常是一个元组,按照0轴、1轴、2轴…的顺序排列。3.1.4Numpy数组的形状(shape)操作2、改变数组的形状Nb数组的形状是(3,4,2)即3页4行2列0轴1轴2轴3.1.4Numpy数组的形状(shape)操作2、改变数组的形状reshape()和resize()函数reshape()函数改变调用数组的形状并返回该数组的备份resize()函数改变调用数组自身(in-place)3.2Numpy中矩阵对象(matrix)Numpy模块库中的矩阵对象为numpy.matrix,实现了对矩阵数据的处理,包括矩阵的计算、基本的统计功能等,以及复数矩阵的处理。1、创建矩阵对象numpy.matrix(data,dtype,copy)其中参数data为ndarray对象或者字符串形式;dtype:为matrix的数据类型;copy:为bool类型。3.2Numpy中矩阵对象(matrix)2、矩阵对象属性matrix.T(transpose):返回矩阵的转置矩阵np.matrix.getT()matrix.H(conjugate):返回复数矩阵的共轭转置矩阵np.matrix.getH()matrix.I(inverse):返回矩阵的逆矩阵np.matrix.getI()matrix.A(basearray):返回基于矩阵的数组np.matrix.getA()3.3NumPy中的数据统计分析3.3.1排序直接排序对数据直接进行排序sort()函数间接排序排序结果是直接排序数据对应的索引形成的数组。argsort()和lexsort()函数3.3NumPy中的数据统计分析3.3.1排序1、sort()函数sort()函数是常用的排序方法,函数调用不会改变原始数组,返回一个排序后数组的临时复本,其shape与原数组一致。格式:numpy.sort(a,axis,kind,order)其中参数含义如下:a:要排序的数组。axis:使得sort函数可以沿着指定轴对数组进行排序。axis=1按行排序,axis=0为按列排序,axis=None将数组平坦化后进行排序,默认axis=-1时沿最后一个轴排序,即如果是2维array,则按axis=1时排序。kind:排序算法,默认quicksort快速排序算法。order:主要对结构化数组进行排序。如果数组包含定义的字段,order指定要排序的字段顺序。3.3NumPy中的数据统计分析3.3.1排序2、sort()函数带参数轴的排序3.3NumPy中的数据统计分析3.3.1排序3、使用argsort和lexsort函数间接排序使用argsort()和lexsort()函数,可以在数组排序后,得到一个由整数构成的索引数组,索引值表示排序后数据在原数组序列中的位置。(1)argsort()函数间接排序argsort(a,axis=-1,kind=None,order=None)argsort()函数其返回的是从小到大排序后的索引列表。当axis=0时,按列排列;当axis=1时,按行排列。如果省略默认沿最后一个轴排序,对于二维数组默认按行排序。可以与np.take_along_axis()配合使用。Kind指定排序算法,默认使用quicksort算法。order可以指定结构化数组的排序关键字。3.3NumPy中的数据统计分析3.3.1排序(2)lexsort()函数间接排序lexsort(keys,axis=-1)按照keys指定的排序关键字进行多条件排序。Keys是一个数组或元组,被解释器解释为二维表格中的列。排序时Keys数组/元组中最后一个元素是第一排序关键字,倒数第二个元素是第二排序关键字,…,以此类推。3.3NumPy中的数据统计分析3.3.2重复数据与去重1、数组内数据去重通过unique()函数可以找出数组中的唯一值并返回已排序的结果。unique(ar,return_index=False,return_inverse=False,return_counts=False,axis=None)ar:待处理的数组return_index:设置为True时返回结果的索引数组return_inverse:设置为True时,返回一个索引数组,可以通过这个索引数组还原原数组arreturn_counts:设置为True时,返回原数组中重复数据出现次数的统计数组axis:沿指定轴去重。2维数组axis=0时按行去重,axis=1时按列去重。默认axis=None,将数组平坦化后进行去重并排序3.3NumPy中的数据统计分析3.3.2重复数据与去重1、数组内数据去重设置axis参数可以按行或者列删除。当指定axis参数时,数组按照指定轴上的子数组去重和排序。首先,指定轴作为子数组的第一维按C语言模式平坦化,此时,子数组被看作有标签的结构化数组,去重后排序时按照类似lexsort的字典排序,以子数组的第一个元素开始依次为排序依据R0R1R2R3R43.3NumPy中的数据统计分析3.3.2重复数据与去重2、数组数据的复制重构使用np.tile()和np.repeat()来进行数组数据重复。(1)np.tile()np.tile()函数功能是对整个数组进行复制拼接,实现数组的广播操作。用法如下:numpy.tile(a,reps)其中a为数组,reps为沿着各个轴重复的次数。当a_dimension=len(reps)时,按reps参数进行复制当a_dimension>len(reps)时,在reps初始位置插入若干个1,使得a_dimen

温馨提示

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

评论

0/150

提交评论