位置: IT常识 - 正文

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

发布时间:2024-01-16
【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)(前端上传文件夹怎么操作)

  • 荣耀30有散热功能吗(荣耀30有没有散热装置)

    荣耀30有散热功能吗(荣耀30有没有散热装置)

  • vivo手机电量百分比怎么设置(vivo手机电量百分比)

    vivo手机电量百分比怎么设置(vivo手机电量百分比)

  • 13系统什么时候推送

    13系统什么时候推送

  • 小红书被降权了怎么补救(小红书修改内容之后降权)

    小红书被降权了怎么补救(小红书修改内容之后降权)

  • 超级qq为什么没有了(超级qq在哪里)

    超级qq为什么没有了(超级qq在哪里)

  • 华为p40闹铃怎么设置(华为p40闹铃怎么设置震动)

    华为p40闹铃怎么设置(华为p40闹铃怎么设置震动)

  • 游戏测试需要注意什么?(游戏测试需要注意的点)

    游戏测试需要注意什么?(游戏测试需要注意的点)

  • 仅聊天朋友圈能看到评论吗(仅聊天朋友圈能看到吗)

    仅聊天朋友圈能看到评论吗(仅聊天朋友圈能看到吗)

  • 小米手机移动数据不能用什么原因(小米手机移动数据打不开怎么回事)

    小米手机移动数据不能用什么原因(小米手机移动数据打不开怎么回事)

  • 苹果7phome键按不下去怎么回事(苹果7phome键按不能用怎么办)

    苹果7phome键按不下去怎么回事(苹果7phome键按不能用怎么办)

  • 爱奇艺怎么两人共用(爱奇艺怎么两人一起同步看)

    爱奇艺怎么两人共用(爱奇艺怎么两人一起同步看)

  • vivo快应用怎么卸载(vivo快应用怎么添加到桌面)

    vivo快应用怎么卸载(vivo快应用怎么添加到桌面)

  • 有网络为什么微信发不出去信息(有网络为什么微信发不出信息)

    有网络为什么微信发不出去信息(有网络为什么微信发不出信息)

  • id退出照片怎么恢复(id退出后照片会自动清除吗)

    id退出照片怎么恢复(id退出后照片会自动清除吗)

  • vivo手机双卡双待设置(vivo手机双卡双待怎么设置)

    vivo手机双卡双待设置(vivo手机双卡双待怎么设置)

  • 手机怎么设置来电显示(手机怎么设置来电空号)

    手机怎么设置来电显示(手机怎么设置来电空号)

  • i音乐里面怎么收藏歌曲(怎么在i音乐里唱歌)

    i音乐里面怎么收藏歌曲(怎么在i音乐里唱歌)

  • qq面对面快传视频存哪了(QQ面对面快传视频播放不了)

    qq面对面快传视频存哪了(QQ面对面快传视频播放不了)

  • 抖音怎么取消企业认证(抖音怎么取消企业员工)

    抖音怎么取消企业认证(抖音怎么取消企业员工)

  • 华为打电话黑屏怎么调(华为打电话黑屏感应设置怎么关闭)

    华为打电话黑屏怎么调(华为打电话黑屏感应设置怎么关闭)

  • 公式编辑器中补集符号怎么打(公式编辑器的符号没了怎么办)

    公式编辑器中补集符号怎么打(公式编辑器的符号没了怎么办)

  • 华为运动耳机配对蓝牙(华为运动耳机配对笔记本电脑)

    华为运动耳机配对蓝牙(华为运动耳机配对笔记本电脑)

  • iphone如何使用hao客户端(iPhone如何使用推特)

    iphone如何使用hao客户端(iPhone如何使用推特)

  • 淘宝网如何上传图片(淘宝网如何上传视频)

    淘宝网如何上传图片(淘宝网如何上传视频)

  • xr系统占多少内存(xr系统占多少内存够用)

    xr系统占多少内存(xr系统占多少内存够用)

  • box-sizing:border-box的理解和作用

    box-sizing:border-box的理解和作用

  • 中税协是什么意思
  • 未按期纳税申报怎么处理
  • 小规模纳税人申请一般纳税人条件
  • 没有达到30万销量怎么办
  • 劳务公司为一般纳税人的税率
  • 个税返还手续费政策
  • 个税申报显示无有效的税费种认定信息已核定
  • 金税四期的主要功能
  • 银行汇票用什么账户核算
  • 属于企业期间费用的有
  • 税务等级低有什么影响
  • 用友怎么设置工龄工资
  • 土地增值税清算是什么意思
  • 应交税金及附加包括哪些
  • 广告业与服务业哪个好
  • 专项补助资金补助的领域包括
  • 药店的成本费用有哪些
  • 代办会议费是否允许差额纳税
  • 显示发票离线,应当如何处理
  • 增值税专用发票税率
  • 发票丢失可以抵扣吗
  • 律师事务所的会计账务处理
  • 产值等于营业额吗
  • 未实缴出资的股权转让账务处理
  • 什么情况下征收车船税
  • 新会计准则下职工薪酬的变化及影响摘要
  • 长期股权投资溢价购入
  • 兼职人员的工资需要发票吗
  • 电脑开始菜单在右边怎么调回来
  • 结转已经销售商品成本的分录
  • 如何激活windows10免费
  • 宽带错误797最简单解决方法
  • 查账补缴的税的账怎么做
  • adv举例
  • 酒店布草洗涤赔偿怎样折旧
  • win10组策略关闭defender
  • win10专业版如何关闭系统更新
  • 单位银行结算账户属于活期存款账户
  • PHP:oci_get_implicit_resultset()的用法_Oracle函数
  • win11搜索栏不能用
  • 体积最小的机械硬盘
  • 转让旧设备
  • vscode配置javafx
  • 西部大开发税收优惠政策是什么时候开始的?
  • 事业单位委托业务费的现金流量
  • 若依idea
  • 出售子公司股权不丧失控制权
  • 为什么银行结息不加入账户
  • 销售佣金 会计分录
  • 为什么社保卡里有钱
  • 6%税点是什么意思
  • PostgreSQL 查看数据库,索引,表,表空间大小的示例代码
  • 固定资产达到预定状态的判定
  • 固定资产计提折旧表
  • 银行定期存款取一部分怎么算利息
  • 建安企业增值税预缴
  • 免费品尝活动广告语
  • 进项税转出的金额是什么
  • 什么是资产处置收益
  • 公司帐户到银行怎么取钱
  • 发票抬头是个人税号怎么填
  • 资产处置收益和资产减值损失区别
  • 进口车购置税多少个点
  • 建账的要点
  • mysql输入密码命令
  • 电脑重装windows
  • centos7光盘挂载方法
  • 如何关闭电脑端口
  • win7系统计算机名称在哪看
  • win10 world文档
  • linux 744
  • 数据库多表连接的几种方式
  • vue-cal
  • javascript val
  • 全屏沉浸式
  • android sdk在哪下载
  • python语言及应用
  • 税务登记证发证机关名称
  • 房屋契税和维修基金是开发商交还是业主交
  • 个人所得税的通知
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号