版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NumPy库CHAPTER15CONTENTS目
录01概述02数组创建03数组索引和切片04数组运算05数组对象的常用函数概述NumPy数组是NumPy库中的核心对象,它是一个用于保存数据的网格状结构。这种数组可以拥有任意数量的维度,每个维度也可以是任意长度,因此可以非常方便地处理各种类型的数据集。NumPy数组有许多重要的特性:(1)数据类型:NumPy数组具有明确的数据类型,这可以提高处理速度并减少内存使用。在创建数组时,可以指定数据类型,如整数、浮点数或复数等。默认情况下,如果未指定数据类型,NumPy会根据输入数据自动推断数据类型。(2)形状:数组的形状由其维度确定。一维数组类似于Python列表,而多维数组则类似于嵌套列表。可以通过数组的shape属性获取其维度信息。(3)广播机制:NumPy的广播机制允许对不同形状的数组进行数学运算,而无需显式地重塑或复制数据,这使得在数组上进行计算变得非常高效。(4)切片和索引:NumPy数组支持类似于Python列表的切片和索引操作,这使得访问和修改数组元素变得非常直观和方便。(5)数学运算:NumPy提供了大量的数学函数和操作符,可以直接对数组进行运算,无需编写循环,这使得处理大规模数据集时能够显著提高性能。数组创建下面是数组创建的一些具体实例:>>>importnumpyasnp>>>a=[1,2,3,4,5]#创建简单的列表>>>b=np.array(a)#将列表转换为数组>>>barray([1,2,3,4,5])>>>b.size#数组的元素个数5>>>b.shape#数组的形状(5,)>>>b.ndim#数组的维度1>>>b.dtype#数据的元素类型dtype('int32')>>>print(b[0],b[1],b[2])#访问数组元素123数组创建>>>b[4]=6#修改数组元素>>>barray([1,2,3,4,6])>>>c=np.array([[1,2,3],[4,5,6]])#创建二维数组>>>c.shape#数组的形状(2,3)>>>print(c[0,0],c[0,1],c[0,2],c[1,0],c[1,1],c[1,2])123456>>>d=a.copy()#数组的复制>>>d[1,2,3,4,5]数组创建NumPy还提供了一些常用的数据创建函数,包括zeros()、ones()、empty()、eye()、full()、random.random()、random.randint()、random.rand()、random.randn()、random.uniform()、linspace()、arange()等。(1)zeros():创建一个数组,内部元素均为0,第一个参数提供维度,第二个参数提供类型。>>>a=np.zeros([2,3],int)>>>aarray([[0,0,0],[0,0,0]])(2)ones():创建一个数组,内部元素均为1,第一个参数提供维度,第二个参数提供类型。>>>a=np.ones([2,3],int)>>>aarray([[1,1,1],[1,1,1]])数组创建(3)empty():创建一个没有任何具体值的数组,第一个参数提供维度,第二个参数提供类型。>>>a=np.empty([2,3],int)>>>aarray([[0,0,0],[0,0,0]])(4)eye():返回一个具有对角线为1其余元素为0的二维数组,常称为单位矩阵;第一个参数提供矩阵规模;第二个参数如果为0则对角线全为“1”,大于0则右上方第k条对角线全为“1”,小于0则左下方第k条对角线全为“1”;第三个参数提供类型。>>>a=np.eye(3,k=1,dtype=int)>>>aarray([[0,1,0],[0,0,1],[0,0,0]])>>>a=np.eye(4,k=-2,dtype=int)>>>aarray([[0,0,0,0],[0,0,0,0],[1,0,0,0],[0,1,0,0]])数组创建(5)full():full((m,n),c)用于创建一个指定形状(m行n列)、指定值(c)的数组。>>>a=np.full((2,3),4)>>>aarray([[4,4,4],[4,4,4]])(6)random.random():random.random((m,n))生成一个m行n列的元素为0~1随机数的数组。>>>a=np.random.random((2,3))>>>aarray([[0.46657535,0.2398773,0.18675721],[0.30525201,0.66826887,0.5708038]])数组创建(7)random.randint():random.randint(low,high=None,size=None,dtype='l')返回一个随机整数,范围从低(包括)到高(不包括),即[low,high)。如果没有写参数high的值,则返回[0,low)的值。size用于指定生成元素值的形状,也就是数组维度的大小,如果不指定size这个参数,那么生成的元素值的个数只有一个。>>>a=np.random.randint(2,size=10)>>>aarray([0,1,0,0,1,1,0,0,1,1])>>>b=np.random.randint(5,size=(2,4))>>>barray([[1,2,3,3],[0,0,2,4]])数组创建(8)random.rand():random.rand(d0,d1,…,dn)根据给定维度生成[0,1)内的数据,其中,dn表示数组每个维度的元素个数。>>>a=np.random.rand(4,2)>>>aarray([[0.22225254,0.25555882],[0.69250455,0.62957494],[0.567664,0.30459249],[0.16394031,0.00900947]])数组创建(9)random.randn():random.randn(d0,d1,…,dn)返回一个或一组样本,具有标准正态分布,其中,dn表示数组每个维度的元素个数。>>>a=np.random.randn(2,4)>>>aarray([[-0.28183753,-0.4931384,-2.11355842,0.17782074],[-1.14089585,0.816798,0.39287532,-0.19339946]])(10)random.uniform():random.uniform(low,high,size)会从一个均匀分布[low,high)中随机采样,其中,low表示采样下界,float类型,默认值为0;high表示采样上界,float类型,默认值为1;size表示输出样本数目,为int或元组类型,例如,size=(m,n,k),则输出m*n*k个样本,缺省时输出1个值。>>>a=np.random.uniform(5,10,size=4)>>>aarray([6.67581928,9.15495131,5.02607146,5.05260788])数组创建(11)linspace():linspace(start,end,num=num_points,endpoint=False,retstep=True,axis=0,dtype=int),用于在线性区域中生成等间距的序列。其中,[start,end]表示数值区间;num表示元素个数;endpoint如果设置为False,表示对应的序列在[start,end),即不包括最后一个元素;retstep如果设置为True,则返回的序列结果为一个元组;axis用于设置轴来存储,默认为0,表示在开始处插入新轴;dtype表示数据类型,默认类型为int,很多时候输出为float类型。数组创建>>>a=np.linspace(10,100,10)>>>aarray([10.,20.,30.,40.,50.,60.,70.,80.,90.,100.])(12)arange():arange(start,stop,step,dtype=None)返回在给定的间隔内返回具有一定步长的整数。start和stop分别表示开始位置和结束位置,step表示步长,dtype表示输出数组的类型,如果未给出dtype,则从其他输入参数推断数据类型。>>>a=np.arange(1,5,2)>>>aarray([1,3])>>>a=np.arange(1,5)#起点为1,步长默认为1>>>aarray([1,2,3,4])>>>a=np.arange(5)#只有结束项>>>aarray([0,1,2,3,4])数组索引和切片与Python列表类似,NumPy数组可以索引和切片。由于数组可能是多维的,因此,必须为数组的每个维度指定一个索引或切片。具体实例如下:>>>a=np.arange(10)#返回0~9,整型>>>aarray([0,1,2,3,4,5,6,7,8,9])>>>a[5]5>>>a[5:8]array([5,6,7])>>>a[5:8]=12>>>aarray([0,1,2,3,4,12,12,12,8,9])数组索引和切片>>>a=np.arange(10)>>>a_slice=a[5:8]>>>a_slice[0]=-1>>>a_slicearray([-1,6,7])>>>aarray([0,1,2,3,4,-1,6,7,8,9])>>>b=np.array([[1,2,3],[4,5,6],[7,8,9]])>>>b[2]array([7,8,9])>>>b[0][2]3>>>b[0,2]3数组索引和切片>>>b[:2]array([[1,2,3],[4,5,6]])>>>b[:2,1:]array([[2,3],[5,6]])>>>b[1,:2]array([4,5])>>>b[:2,2]array([3,6])>>>b[:,:1]array([[1],[4],[7]])数组运算数组运算实质上是数组对应位置的元素的运算,常见的是加、减、乘、除、开方等运算。具体实例如下:>>>a=np.array([[1,2,3],[4,5,6]])>>>a*aarray([[1,4,9],[16,25,36]])>>>a-aarray([[0,0,0],[0,0,0]])>>>1/aarray([[1.,0.5,0.33333333],[0.25,0.2,0.16666667]])数组运算>>>a+aarray([[2,4,6],[8,10,12]])>>>np.exp(a)#e的幂array([[2.71828183,7.3890561,20.08553692],[54.59815003,148.4131591,403.42879349]])>>>np.sqrt(a)array([[1.,1.41421356,1.73205081],[2.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国超透镜设计软件市场数据研究及竞争策略分析报告
- 2026年中国超轻型试验变压器市场数据研究及竞争策略分析报告
- 2026年国企新员工入职性格测试指南
- 2026年公积金归集提取贷款审核操作要点练兵问答
- 2026年生态产品价值实现题库
- 2026年房地产经纪人职位面试市场分析题
- 2026年家具维修工面试题库
- 2026年中国超高压增压器市场数据研究及竞争策略分析报告
- 2026年公共资源交易智慧监管知识测试题
- 2026年乡镇干部农村幸福院管理专项题库
- 2026季华实验室测试中心招聘5人(广东)笔试参考题库及答案解析
- 2026年吉林四平市高职单招英语试题含答案
- 210亩黄精林下套种可行性研究报告
- 中国慢性阻塞性肺疾病诊治指南(2025版)
- 律所反洗钱内部控制制度
- 20.1 勾股定理及其应用 课件 2025-2026学年 人教版八年级数学下册
- 2025年宿州职业技术学院单招职业技能考试试题及答案解析
- 2026春人教版(新教材)小学美术二年级下册《天然的形态》教学设计
- 2025年专升本管理学原理模拟试卷及答案
- 山东省济南市2025-2026年高三上第一次模拟考试历史+答案
- 临潼介绍教学课件
评论
0/150
提交评论