版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python财经应用:编程基础、数据分析与可视化第五章NumPy数值计算中国农业大学李辉目录01数组的创建与访问02数组的运算03数组的操作目录01数组的创建与访问02数组的运算03数组的操作5.3数组的操作第五章NumPy数值计算数组的操作NumPy中的数组在处理数据时可以用简洁的表达式代替循环,它比内置的Python循环快了至少一个数量级,因此成为大量数据处理的首选。本节将讲解数组中常见的数据操作,包括排序、合并等操作。数组的操作——数组的排序在NumPy库中,排序操作可通过两种主要方式实现:利用NumPy数组的sort()方法,或者使用NumPy的argsort函数。sort()方法:原地排序,这意味着它会直接修改原数组,元素的位置将根据排序结果发生变动。argsort函数:不会触及原数组的元素顺序,而是返回一个包含原数组元素排序后索引的新数组。若需获取排序后元素在原数组中的具体位置,argsort函数正是为此而设计。在NumPy的排序实践中,sort()方法通常用于直接对数组进行排序。而对于间接排序的需求,argsort函数和lexsort()函数则是常用的工具,它们能够根据特定的排序规则返回索引数组,从而实现对原数组的间接排序。数组的操作——数组的排序1.sort函数sort函数是最常用的排序方法,函数调用改变原始数组,其语法格式如下:sort(a,axis,kind,order)参数说明:a:要排序的数组。axis:使得sort函数可以沿着指定轴对数据集进行排序。axis=None:对数组进行扁平化排序,返回排序后的数组。axis=0:沿着数组的列(垂直方向)进行排序。axis=1:沿着数组的行(水平方向)进行排序。默认值为None。kind:排序算法,默认为quicksort。order:如果数组包含字段,则是要排序的字段。数组的操作——数组的排序2.argsort函数使用argsort函数对数组进行排序,返回升序排序之后的数组值为从小到大的索引值。【例5-24】argsort函数的应用示例。
importnumpyasnpx=np.array([4,8,3,2,7,5,1,9,6,0])print('升序排序后的索引值:')y=np.argsort(x)print(y)print('排序后的顺序重构原数组:')print(x[y])数组的运算——数组的转置运行结果如下:
升序排序后的索引值:[9632058417]排序后的顺序重构原数组:[0123456789]数组的操作——数组的排序3.lexsort函数lexsort函数用于对多个序列进行排序。可以把它当作是对电子表格进行排序,每一列代表一个列,排序时会优先照顾靠后的列。【例5-25】使用argsort函数和lexsort函数进行排序。数组的操作——数组的排序
importnumpyasnparr=np.array([7,9,5,2,9,4,3,1,4,3])print('原数组:',arr)print('排序后各数据的索引:',arr.argsort())#返回值为数组排序后的下标排列print('显示较大的5个数:',arr[arr.argsort()][-5:])a=[1,5,7,2,3,-2,4]b=[9,5,2,0,6,8,7]ind=np.lexsort((b,a))print('ind:',ind)tmp=[(a[i],b[i])foriinind]print('tmp:',tmp)【例5-25】数组的操作——数组的排序运行结果如下:
原数组:[7952943143]排序后各数据的索引:[7369582014]显示较大的5个数:[45799]ind:[5034612]tmp:[(-2,8),(1,9),(2,0),(3,6),(4,7),(5,5),(7,2)]二维数组排序时需要指定按哪个轴进行排序,默认axis=1。表示按第2个维度排序;如果axis=0,则表示按第1个维度排序。数组的操作——数组的合并数组合并用于多个数组间的操作,两个数组可以沿不同的轴向进行合并,NumPy提供了vstack、hstack、concatenate等合并函数。横向合并:将ndarray对象构成的元组作为参数,传给hstack函数。纵向合并:使用vstack函数实现数组合并。数组的操作——数组的合并
importnumpyasnparr1=np.array([[1,2],[3,4],[5,6]])arr2=np.array([[10,20],[30,40],[50,60]])h_arr=np.hstack((arr1,arr2))print("横向方向合并数据后的数组:\n",h_arr)v_arr=np.vstack((arr1,arr2))print("纵向方向合并数据后的数组:\n",v_arr)【例5-26】数组纵、横合并。数组的操作——数组的合并运行结果如下:
横向方向合并数据后的数组:[[121020][343040][565060]]纵向方向合并数据后的数组:[[12][34][56][1020][3040][5060]]数组的操作——数组的合并
arr1=np.arange(6).reshape(3,2)arr2=arr1*2print('横向组合为:\n',np.concatenate((arr1,arr2),axis=1))print('纵向组合为:\n',np.concatenate((arr1,arr2),axis=0))【例5-27】应用concatenate函数合并数组。数组的操作——数组的合并运行结果如下:
横向组合为:[[0102][2346][45810]]纵向组合为:[[01][23][45][02][46][810]]本章小结本章介绍了NumPy中一维数组和二维数组的创建与使用,主要内容:(1)NumPy是Python的扩展库,它提供了多种创建数组的方法,既可以将Python序列对象或可迭代对象转换为NumPy数组,也可以直接创建不同类型和维度的数组。(2)数组既支持使用索引、切片和列表作为下标访问数组元素,也支
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 列车服务礼仪培训课件
- 阿里巴巴人工智能战略
- 分队长培训课件
- 信用保障之真诚承诺函4篇
- 企业内训课程设计框架内容与形式结合
- 2026重庆望江中学校近期招聘教师6人备考题库及一套完整答案详解
- 分离焦虑培训课件
- 北京市海淀区学府幼儿园招聘备考题库及答案详解(夺冠系列)
- 英思科m40培训课件
- 护理睡眠培训课件
- 来料检验控制程序(含表格)
- 医院供氧、供电、供水故障脆弱性分析报告
- 2025年钛合金阀项目可行性研究报告
- 耙地合同协议书
- 分布式基站光伏电站建设标准
- 2024-2025学年广东省深圳市福田区六年级(上)期末数学试卷
- 酸枣扦插快繁技术规程DB1305T+098-2016
- 道岔滚轮作用原理讲解信号设备检修作业课件
- 小学师徒结对师傅工作总结
- 2024-2025学年山东省临沂市高二上学期期末学科素养水平监测数学试卷(含答案)
- 房地产 -北京好房子政策研究报告-规划技术和市场效应 202502
评论
0/150
提交评论