numpy 学习汇总45 - 数组选择设置(11种方法)( 初步学习 tcy)
发布日期:2021-06-29 14:47:57
浏览次数:3
分类:技术文章
本文共 6182 字,大约阅读时间需要 20 分钟。
选择设置 2018/6/24 2018/11/30 =============================================================================1.函数 np.s_[:] #数组索引np.index_exp[2::2] #建立数组索引元组的更好方法a.item(* args) 复制元素到python标量# 参数:None:len(a)=1; Int_type:数组平面索引;Int_types:元祖a.itemset(* args)更改数组中数值 # 参数:参数1int 或元祖,位置(x,[y]);参数2更改值a.getfield(dtype,offset = 0 ) #以给定类型返回给定数组的字段。 np.take(a,indices,axis = None,out = None,mode ='raise' )# 获取(默认1D )元素;优于花式索引np.put(a,ind,v,mode ='raise' ) # 设置1D元素;等价a.flat[ind] = v np.nonzero(a) #返回输入数组中非零元素的索引。 np.select(condlist, choicelist, default=0) #返回从选择列表中的元素绘制的数组,取决于条件np.choose(a,choice,out = None,mode ='raise' )#根据条件选择np.where(condition, [x, y]) #返回输入数组中满足给定条件的元素的索引。np.extract() #根据某个条件从数组中抽取元素,返回满条件元素 np.compress(condition,axis = None,out = None )# 沿给定的轴返回此数组的选定切片 =============================================================================2.实例 # 实例1:np.s_-数组索引np.s_[2::2] #slice(2, None, 2)np.index_exp[2::2] #(slice(2, None, 2),)np.array([0, 1, 2, 3, 4])[np.s_[2::2]] # array([2, 4])np.array([0, 1, 2, 3, 4])[np.index_exp[2::2]] #array([2, 4]) # 实例2:item-获取标量a=np.arange(12).reshape(3,4)a.item(7) #7 获取标量a.item(0,2,) #2 获取标量 等价a.item((0,2)) # 实例3:itemset-设置标量a.itemset(7,-7) #修改元素为-7a #array([[ 0, 1, 2, 3],[ 4, 5, 6, -7],[ 8, 9, 10, 11]])a.itemset((0,2),-2) #修改元素为-2a #array([[ 0, 1, -2, 3], [ 4, 5, 6, -7],[ 8, 9, 10, 11]]) # 实例3:getfield-获取数值字段x = np.diag([1.+1.j]*2)x[1, 1] = 2 + 4.jx # array([[ 1.+1.j, 0.+0.j],[ 0.+0.j, 2.+4.j]])x.getfield(np.float64) # array([[ 1., 0.], [ 0., 2.]]) # 选择8字节偏移量得到虚部视图x.getfield(np.float64, offset=8)# array([[ 1., 0.], [ 0., 4.]]) =============================================================================# 实例4:take-选取元素a = np.array([10, 11, 12, 13, 14, 15]) np.take(a, [0,1,2,3]) # array([10, 11, 12, 13])np.take(a, [[0, 1], [2, 3]]) # array([[10, 11],[12, 13]]) a=np.arange(10,22).reshape(3,4)np.take(a,[0,1,2,3]) # array([10, 11, 12, 13])np.take(a,[[0,1],[2,3]]) # array([[10, 11], [12, 13]]) a.take([1,2],axis=0) # array([[14, 15, 16, 17],[18, 19, 20, 21]]) #选取第2,3行a.take([1,2],axis=1) # array([[11, 12],[15, 16], [19, 20]]) #选取第2,3列 #实例5:put-替换选定位置数据a = np.arange(5)a.put([1,2],-1) #将选定的元素用-1替a #array([ 0, -1, -1, 3, 4]) np.put(a, [4,3,2,1], [-4,-3,-2,-1 ])#选定元素用list替换a #array([ 0, -1, -2, -3, -4]) # 实例6:nonzero-非零元素索引np.nonzero ([3,0,2,5,0,6])# (array([0, 2, 3, 5], dtype=int64),)a = np.array([[3,4,0],[0,2,1],[5,0,6]])b=np.nonzero (a) # (array([0, 0, 1, 1, 2, 2], dtype=int64),array([0, 1, 1, 2, 0, 2], dtype=int64))np.transpose(b) # array([[0, 0], [0, 1], [1, 1],[1, 2],[2, 0],[2, 2]], dtype=int64)a[b] # array([3, 4, 2, 1, 5, 6]) # 一个常用用法是查找条件为True数组的索引a = np.array([[1,2,3],[4,5,6]])a > 3 # array([[False, False, False],[ True, True, True]])np.nonzero(a > 3) # 结果同下(a > 3).nonzero() # (array([1, 1, 1], dtype=int64), array([0, 1, 2], dtype=int64)) np.count_nonzero(a,axis = None )# 计算数组中非零值的数量a。np.count_nonzero(a) =============================================================================# 实例7:select-根据条件选择相应的值x = np.arange(10)condlist = [x<3, x>5]choicelist = [x, x**2]np.select(condlist, choicelist) # array([ 0, 1, 2, 0, 0, 0, 36, 49, 64, 81])np.select(condlist, choicelist,-1) # array([ 0, 1, 2, -1, -1, -1, 36, 49, 64, 81]) # 实例8:choose-根据条件选择result=np.array([0,0,0,0])a=np.choose([0,0,1,2],[0,-1,-2,-3,-4],out=result) #a为1维,choices为1维a # array([ 0, 0, -1, -2]) result==a b=np.choose([[0,1,2],[3,4,5],[5,4,3]],[0,-1,-2,-3,-4,-5])#a为2维,choices为1维b # array([[ 0, -1, -2],[-3, -4, -5],[-5, -4, -3]]) c=np.choose([4,3,2,1,0], #a为1维,choices为2维 [[0,-1,-2,-3,-4],[10,11,12,13,14],[20,21,22,23,24],[30,31,32,33,34],[40,41,42,43,44]])c # array([40, 31, 22, 13, -4]) 4---0 对应choices(4,0) (3,1) (2,2) (1,3) (0,4)d=np.choose([[4,3,2,1,0],[0,1,2,3,4],[0,1,2,3,4]], #a为2维,choices为2维 [[0,-1,-2,-3,-4],[10,11,12,13,14],[20,21,22,23,24],[30,31,32,33,34],[40,41,42,43,44]])d # array([[40, 31, 22, 13, -4], [ 0, 11, 22, 33, 44],[ 0, 11, 22, 33, 44]]) # 实例9:where-根据条件选择x = np.arange(9).reshape(3, 3)y = np.where(x > 3)# (array([1, 1, 2, 2, 2], dtype=int64), array([1, 2, 0, 1, 2], dtype=int64))x[y] #array([4, 5, 6, 7, 8]) # 实例10:where-根据条件选择x = np.arange(9.).reshape(3, 3)condition = np.mod(x,2) == 0# 定义条件, 选择偶数元素condition # array([[True,False,True],[False,True,False],[True,False,True]])np.extract(condition, x) # array([0., 2., 4., 6., 8.]) # 使用条件提取元素 ============================================================================# 实例11:compress-沿轴返回此数组选定切片 np.compress(condition,axis = None,out = None )# 沿给定的轴返回此数组的选定切片 a = np.array([[1, 2], [3, 4], [5, 6]])b1=np.compress([1, 1,0], a, axis=0) # 按行选取,前为逻辑条件,选取第1,2行b2=np.compress([4, True], a, axis=1) # 按列选取,前为逻辑条件,表示选取第1,2列 #在平面阵列上工作时不会沿着轴返回切片,而是选择元素。b3=np.compress([2, True,0,1,4], a)# 条件为真时选一个元素;逻辑条件最多6个 b1= [[1 2] [3 4] [5 6]]b2= [[1 2] [3 4] [5 6]]b3= [1 2 4 5] =============================================================================3.备注:np.choose(a,choice,out = None,mode ='raise' )#根据条件选择 # 参数# a :int #数组元素0~n-1# choices: #要操作数组,维度和a匹配# out: #接收运算结果维度和 a 一样# mode:#raise默认,a中元素不能超过 n# #clip:a 中的元素如小于0将其变为0,如大于n-1变为n-1# #wrap:将a中的值 value变为value mod n,即值除以n余数。 =============================================================================
转载地址:https://chunyou.blog.csdn.net/article/details/84669639 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月18日 04时50分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2021.4.29课堂总结
2021-07-02
2021.4.30课堂总结和作业
2021-07-02
需要吗?2000GB+学习视频教程 面试资料免费下载
2021-07-02
MySQL对已存在数据库表添加自增ID字段
2021-07-02
idea中的一些常用快捷键
2021-07-02
js校验表单后提交表单的三种方法总结【转载】
2021-07-02
欢迎使用CSDN-markdown编辑器
2021-07-02
a标签中href调用js的几种方法
2021-07-02
jstl标签详解
2021-07-02
Eclipse中使用SVN的使用
2019-04-29
JSON.parse和eval的区别
2019-04-29
JQuery中$.ajax()方法参数详解
2019-04-29
正则表达式的数字实例
2019-04-29
OGNL表达式struts2标签“%,#,$”的区别
2019-04-29
struts2中<s:if>标签的使用
2019-04-29
js 刷新页面window.location.reload();
2019-04-29
【转】EasyUI 验证
2019-04-29
java开发时内存溢出问题
2019-04-29