位置: IT常识 - 正文

【Python】Python寻找多维数组(numpy.array)中最大值的位置(行和列)(python中的查找函数)

编辑:rootadmin
【Python】Python寻找多维数组(numpy.array)中最大值的位置(行和列)

推荐整理分享【Python】Python寻找多维数组(numpy.array)中最大值的位置(行和列)(python中的查找函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python寻址,python re 查找,python re 查找,python寻找元素位置,python寻找完数,python的查找算法,用python查找,python的查找算法,内容如对您有帮助,希望把文章链接给更多的朋友!

最近需要从热力图中找出关键点的坐标,也就是极大值的行和列。搜寻了网上的一些方法,在这里总结一下。使用numpy进行多维数组中最大值的行和列搜寻非常的灵活,有以下几种方法可供参考。

目录

二维数组

方法一:np.max()函数 + np.where()函数

方法二:np.argmax()函数 + np.unravel_index()函数

方法三: skimage.feature.peak_local_max函数

多维数组


二维数组方法一:np.max()函数 + np.where()函数

如下图所示,x是一个 3×3 的二维np.array,首先使用np.max(x)求出x中的最大值,然后使用np.where函数找出数组x中最大值所在的位置。当然这只是np.where的其中一种用法,np.where是一个非常方便的函数,用法还有很多,具体可自行阅读官方文档。

这里说明一下,这种方法下np.where()返回的是一个元组,元组包含两个元素,这两个元素都是np数组,它们的长度对应,里面的值分别对应最大值坐标的行和列。比如,在下图中第一次x的最大值只有一个,所以返回元组中的两个数组长度都是1,因此最大值的坐标为(2,2),第二次的x最大值有3个,因此返回元组中的两个数组长度都是1,坐标分别是(0,1),(1,0),(2,2)

方法二:np.argmax()函数 + np.unravel_index()函数

从下图可以看出,当二维数组中只有一个最大值的时候,使用这种组合方法的结果是正确的,当有多个最大值时,返回的结果就有问题,只返回了第一行最大值的结果。因此这种方法是有弊端的,使用时需考虑实际情况。

原因分析:

np.argmax()函数的正确写法是:numpy.argmax(a, axis=None, out=None), aixs和out是可选参数,np.argmax(x)表示aixs和out是默认,这种情况会将x进行平铺之后,只返回第一次出现的最大值的索引。因此np.argmax(x)=8,np.argmax(y)=1。

np.unravel_index()函数的正确写法是:numpy.unravel_index(indices, shape, order='C'),官方给的解释这个函数的作用是:“convert a flat index or array of flat indices into a tuple of coordinate arrays”,就是找出shape尺寸数组展平后的第indices个数,在原shape尺寸数组中的位置。

indices: An integer array whose elements are indices into the flattened version of an array of dimensions ``shape``. 表示一个索引,这个索引是将维度为shape参数的矩阵展平后的索引。shape:The shape of the array to use for unraveling ``indices``. 用来解开 indices 的 数组形状。【Python】Python寻找多维数组(numpy.array)中最大值的位置(行和列)(python中的查找函数)

order : {'C', 'F'}, optional. Determines whether the indices should be viewed as indexing in row-major (C-style) or column-major (Fortran-style) order. 可选,一般默认就好。

具体过程解释:以下图情况下的 np.unravel_index(np.argmax(x), x.shape) 为例, 也就是np.unravel_index(8, (3,3)),也就是将 3 × 3 的数组展平后找到第8个数,然后找出这个数在原来3 × 3 数组中的坐标。

方法三: skimage.feature.peak_local_max函数

peak_local_max函数的作用主要是来选出图像中的极大值坐标的,很少用于筛选最大值。该函数的输入往往是一个(h,w)的数组,h,w是图像的高和宽,返回的是图像内部的极大值坐标数组,(n,2), n表示有多少个峰值(极大值)。当时输入的维度为三维(3,h, w)时,返回的维度是(n,3)。函数的官方定义为: "Find peaks in an image as coordinate list or boolean mask. Peaks are the local maxima in a region of `2 * min_distance + 1` (i.e. peaks are separated by at least `min_distance`). If both `threshold_abs` and `threshold_rel` are provided, the maximum of the two is chosen as the minimum intensity threshold of peaks.", 参数为:

peak_local_max(image, min_distance=1, threshold_abs=None, threshold_rel=None, exclude_border=True, indices=True, num_peaks=np.inf, footprint=None, labels=None, um_peaks_per_label=np.inf, p_norm=np.inf)

常用参数解释:

min_distance: 分离出峰时的最小允许距离,默认为1,当要寻找图像中峰值的最大数量是,请使用 min_distance = 1;注意:选取的峰值是在 “2 * min_distance + 1” 区域内的最大值。

threshold_abs:选取峰值时的最小强度。当默认时,threshold_abs的值为图像中的最小值。

threshold_rel:同样时选取峰值时的最小强度。只不过计算方式为:max(image) * threshold_rel。注意:当threshold_abs、threshold_rel两个参数都传入时,它们两者之间的最大者被选取为峰值的最小强度。

exclude_border: 默认为True。用来去除图像边界处exclude_border距离内的峰值。当为True时,以min_distance的值作为exclude_border的值。当为正整数时,正常执行。当为 zero 或 False时,所有的峰值都被接受,即使是在边界处。

num_peaks:选取前 num_peaks 个峰值的坐标。

多维数组

在画热力图时,我们得到张量尺寸往往是:(bathsize, n, h, w),  bathsize是每一批量的数量,n是一张图片对应的关键点的数量,h,w分别是关键点对应的热力图的高和宽。我们主要是求最后两个维度上的最大值的坐标以获取关键点在热力图中的位置。因此最直观的方法就是对前面的维度做个循环,然后使用上述的方法找最大值的坐标。当然也可以用peak_local_max()函数来处理。

因有些其他事需处理,没有去深入调研相关更高效的方法,以后找到了再补充。大佬们有更合适的方法也欢迎在评论区交流!

本文链接地址:https://www.jiuchutong.com/zhishi/297347.html 转载请保留说明!

上一篇:单点登录(SSO)(单点登录sso原理)

下一篇:前端上传文件夹或文件至后端(SpringBoot)(前端上传文件夹怎么操作)

  • 小米平板5pro怎么关闭桌面搜索框(小米平板5pro怎么样)

    小米平板5pro怎么关闭桌面搜索框(小米平板5pro怎么样)

  • 为什么苹果11不能提前激活(为什么苹果11不支持口罩解锁)

    为什么苹果11不能提前激活(为什么苹果11不支持口罩解锁)

  • 淘宝取件码一直获取不到怎么办(淘宝取件码发到哪里了)

    淘宝取件码一直获取不到怎么办(淘宝取件码发到哪里了)

  • 聊天fm什么意思(聊天fm什么意思啊)

    聊天fm什么意思(聊天fm什么意思啊)

  • 网易云字体大小在哪设置(网易云字体大小在哪)

    网易云字体大小在哪设置(网易云字体大小在哪)

  • 电脑软件显示变大了怎么调小(电脑软件都变成图片那种了 是怎么回事)

    电脑软件显示变大了怎么调小(电脑软件都变成图片那种了 是怎么回事)

  • 企业微信和微信的区别(企业微信和微信怎么解绑)

    企业微信和微信的区别(企业微信和微信怎么解绑)

  • 芒果tv为什么没有弹幕开启标志(芒果tv为什么没有4k)

    芒果tv为什么没有弹幕开启标志(芒果tv为什么没有4k)

  • 移动升级5g需要换卡吗(移动升级5g需要换sim卡吗)

    移动升级5g需要换卡吗(移动升级5g需要换sim卡吗)

  • 小米9长度多少厘米(小米9长度多少毫米)

    小米9长度多少厘米(小米9长度多少毫米)

  • 明明有抖音号为什么搜不到(明明有抖音号为什么搜不到但另一手机就能搜到)

    明明有抖音号为什么搜不到(明明有抖音号为什么搜不到但另一手机就能搜到)

  • 怎么查询wifi连接人数(怎么查询WiFi连着几台设备)

    怎么查询wifi连接人数(怎么查询WiFi连着几台设备)

  • qq小海螺标志是什么(qq海螺标识怎么点亮)

    qq小海螺标志是什么(qq海螺标识怎么点亮)

  • 运算器alu的主要功能是指(运算器alu主要功能是指什么)

    运算器alu的主要功能是指(运算器alu主要功能是指什么)

  • 固态硬盘怎么判断坏了(固态硬盘怎么判断主控坏了)

    固态硬盘怎么判断坏了(固态硬盘怎么判断主控坏了)

  • 苹果app购买项目什么意思(苹果app购买项目怎么付费)

    苹果app购买项目什么意思(苹果app购买项目怎么付费)

  • 苹果官网优惠码哪里可以得到(苹果官网优惠码输入口)

    苹果官网优惠码哪里可以得到(苹果官网优惠码输入口)

  • 手机没有储存卡会怎么样(手机没有储存卡能用吗)

    手机没有储存卡会怎么样(手机没有储存卡能用吗)

  • 京东必购码怎么赠送(京东必购码怎么取消绑定)

    京东必购码怎么赠送(京东必购码怎么取消绑定)

  • 在哪里看自己发的抖音(在哪里看自己发过的状态)

    在哪里看自己发的抖音(在哪里看自己发过的状态)

  • 苹果私密相册怎么弄(苹果私密相册怎么打开)

    苹果私密相册怎么弄(苹果私密相册怎么打开)

  • 抖音作业打卡视频怎么拍(抖音打卡视频)

    抖音作业打卡视频怎么拍(抖音打卡视频)

  • 抖音私信记录能恢复吗(抖音私信记录能迁移吗)

    抖音私信记录能恢复吗(抖音私信记录能迁移吗)

  • 预收账款开票怎么做账
  • 自创商誉可以税前扣除吗
  • 汇票签收后可以撤回吗
  • 一次性收取加盟费 所得税
  • 每月工资不一样怎么交党费
  • 补贴收入如何入账
  • 疫情期间发生的费用进什么科目
  • 更正个税申报需要做账吗
  • 出差飞机票报销标准
  • 个人所得税年底返税
  • 生产成本里面的工资
  • 固定资产原值错误的账务处理
  • 抽奖中的汽车需要交购置税吗
  • 转让房产的单位和个人都需要缴纳契税吗?
  • 赠与和继承哪个划算
  • 机票的差额发票可以报销吗
  • 财政拨款的事业单位有哪些
  • 你如何界定成本与费用之间区别?
  • 租个人房子开发票税率是多少
  • etc开了充值发票还可以开消费发票么?
  • 发票抬头写错了还能报销吗
  • 合同是怎么影响企业纳税的?
  • 自营方式建造固定资产成本包括增值税吗
  • 专票当普票入帐有问题吗
  • windows10如何关闭病毒和威胁防护设置
  • 少交的增值税如何记账
  • 静态回收期计算方法例子
  • 购买理财产品收到的利息分录
  • 工程结算转收入
  • 固定资产如何做账务处理
  • 银行贷款用途能改吗
  • 股权投资准备的主要内容
  • vue3setup语法糖如何定义realtive数据
  • 程序员后续发展
  • 小规模建筑公司经营范围大全
  • 仓库发货打包以及建议年终总结
  • elasticsearch基本概念
  • 信用证支付方式,银行处理单据时主要关注( )
  • 织梦相关文章调用
  • 会计六大类会计科目
  • 信息采集需要填写不动产权证书号吗
  • 支付宝企业账户怎么注销
  • sqlserver2008数据库定时备份
  • 税控盘减免税款冲减管理费用
  • 银行期初余额录少了怎么办
  • 上月做了未开票收入,这月开了票怎么报税
  • 福利费以后年度可以抵扣吗
  • 收到票据款
  • 税交多了可以退吗
  • 测距仪计入什么科目
  • 小规模纳税人开专票需要交税吗
  • 长期股权投资的交易费用计入哪里
  • sqlserver
  • docker untagged
  • 苹果Mac系统怎么切换输入法
  • dvd rom drive bbs priorities
  • Win7 SP1补丁32/64位 2015年1月汇总篇(内附下载)
  • win10周年纪念版
  • xp移动系统
  • unity3d面试题摘选(全)
  • node.js redis
  • [置顶]JM259194
  • unity物体边缘发光
  • android 基础
  • unity全屏
  • JavaScript jQuery 中定义数组与操作及jquery数组操作
  • unity手柄圆盘
  • Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
  • shell函数库
  • python第三方库的安装方法有哪些
  • android的中文
  • 国家税务总局2012年20号公告
  • 财税刘毅
  • 河北省电子税务局官网app
  • 企业跨区域迁移
  • shell ftp -n
  • 增值税发票税控盘开票软件怎么下载
  • 大企业如何做好工作
  • 税务登录 河北省地方税务局
  • 天津静海离天津市区多远
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设