位置: 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)(前端上传文件夹怎么操作)

  • yy影子风(yy影视)(yy影子舞蹈视频)

    yy影子风(yy影视)(yy影子舞蹈视频)

  • 小米录屏快捷键是哪个(小米录屏快捷键是哪个键)

    小米录屏快捷键是哪个(小米录屏快捷键是哪个键)

  • 微信昵称怎么设置(微信昵称怎么设置动态图)

    微信昵称怎么设置(微信昵称怎么设置动态图)

  • 杨声器是什么(杨声器是什么意思)

    杨声器是什么(杨声器是什么意思)

  • 闲鱼申请退款卖家不处理几天会退款(闲鱼申请退款卖家会收到短信吗)

    闲鱼申请退款卖家不处理几天会退款(闲鱼申请退款卖家会收到短信吗)

  • redmi8a是什么型号(redmi8a手机性能怎么样)

    redmi8a是什么型号(redmi8a手机性能怎么样)

  • 荣耀v30发热严重(荣耀v30发热严重怎么回事)

    荣耀v30发热严重(荣耀v30发热严重怎么回事)

  • 淘宝为什么会提醒帮买(淘宝为什么会提示所有产品没有尺码推荐)

    淘宝为什么会提醒帮买(淘宝为什么会提示所有产品没有尺码推荐)

  • 华为闹钟图标取消不掉(华为闹钟图标取消不掉怎么办)

    华为闹钟图标取消不掉(华为闹钟图标取消不掉怎么办)

  • a10相当于骁龙多少(新一代骁龙4)

    a10相当于骁龙多少(新一代骁龙4)

  • 手机号码怎么加入黑名单(手机号码怎么加区号)

    手机号码怎么加入黑名单(手机号码怎么加区号)

  • 多媒体课件分为哪几种类型(多媒体教学软件)

    多媒体课件分为哪几种类型(多媒体教学软件)

  • qq怎么设置充电中(扣扣手机充电中怎么设置)

    qq怎么设置充电中(扣扣手机充电中怎么设置)

  • 大王卡共享热点怎么算(大王卡共享热点花钱吗)

    大王卡共享热点怎么算(大王卡共享热点花钱吗)

  • ip协议的作用(计算机网络中tcp/ip协议的作用)

    ip协议的作用(计算机网络中tcp/ip协议的作用)

  • 华为gt2能接打电话吗(华为gt2接打电话声音小)

    华为gt2能接打电话吗(华为gt2接打电话声音小)

  • iphone怎么截长图(iphone怎么截长图聊天记录)

    iphone怎么截长图(iphone怎么截长图聊天记录)

  • airpods2能用多久(airpods2可以续航多久)

    airpods2能用多久(airpods2可以续航多久)

  • 微信删除照片怎么恢复(微信删除照片怎么删除)

    微信删除照片怎么恢复(微信删除照片怎么删除)

  • 红米k20会加入dc调光吗(red米k20)

    红米k20会加入dc调光吗(red米k20)

  • nova5发布会地点(nova5发布会时间)

    nova5发布会地点(nova5发布会时间)

  • 快手能关注2000个人吗(快手能关注多少人)

    快手能关注2000个人吗(快手能关注多少人)

  • 电话被对方拉黑发信息能收到吗(电话被对方拉黑提示什么)

    电话被对方拉黑发信息能收到吗(电话被对方拉黑提示什么)

  • 什么是百度指数(什么是百度指数,有什么功能)

    什么是百度指数(什么是百度指数,有什么功能)

  • High-resolution image reconstruction with latent diffusion models from human brain activity

    High-resolution image reconstruction with latent diffusion models from human brain activity

  • 税务局退回个税手续费会计分录
  • 医院这么开发票
  • 用友t3软件的系统内没有利润表模块
  • 疫情期间发生的费用进什么科目
  • 出纳取备用金需要交税吗
  • 员工出差有补助吗
  • 用友怎么设置工龄工资
  • 长期挂账应收账款怎么调
  • 铁路运输发票的开具要求
  • 专项维修资金的,由县级
  • 跨年的费用需要冲减
  • 进项税申报但未抵扣
  • 法院拍卖房法院有什么义务和责任
  • 存货的主要内容包括什么
  • 公司转账给公司会计分录
  • 制冷设备增值税税率
  • 结转成本计算方法
  • 出口的增值税到底怎么算的
  • 服务设计合同标准版
  • 住院材料费包括哪些
  • 开立银行承兑汇票清单怎么盖章
  • 印花税的征税范围及税率
  • 调整以前年度企业所得税会计分录
  • coloros12对比鸿蒙
  • 固定资产清理借贷方向增减变动
  • 质押已至票据到期日
  • 会计科目按经济类型分类
  • 标书费没有发票
  • 长期贷款利息怎样计算
  • 修改bios设置
  • uniapp微信小程序支付流程
  • the Pura Meduwe Karang神庙中雕刻艺术家W.O.J.Nieuwenkamp的作品,印度尼西亚巴厘岛 (© John Elk III/Getty Images)
  • 企业收到分红款是免税收入吗
  • 进口增值税的账务处理
  • 伏尔塔瓦河上的纤夫
  • 开具增值税专用发票和普通发票的区别
  • 卡特迈国家公园熊吃人
  • 企业清算分配的财产金额怎么算出来
  • yii2前后端分离
  • 中小企业所得税优惠政策2022
  • gpts
  • 到对公账户的钱能立马转出去吗
  • 进项发票和销项发票金额相同还需要交税金吗
  • 3月1日前包括什么意思
  • 利息 记账
  • 哪个网站可以免费学电脑
  • el-form表单
  • 企业所得税的成本
  • 一般纳税人接受捐赠的固定资产,捐赠方提供了有关凭证
  • 企业享受政府补贴的具体方式
  • 个体户需要实缴吗
  • 契税的计税金额是什么
  • 企业逾期贷款利息影响征信吗
  • 政府补贴的装修费是免税的吗
  • 发出存货的计价应当采用
  • 公户转私户的钱怎么退回来
  • 财务报表分析的目的
  • 支票丢失需要登报吗
  • 会计科目设置的相关注意事项
  • 加快Vista中多线程下载速度
  • 自制简易手工
  • fedora linux安装教程
  • xp系统镜像文件怎么制作
  • linux使用方式有哪些方面
  • font system
  • win7安全模式
  • 按住鼠标右键拖动文件
  • nodejs中的模块以及作用
  • js 单引号
  • Activity的四种启动模式和onNewIntent()
  • python数据可视化课后题答案
  • 安卓返回按钮图标
  • 修改文件名ren
  • unity strangeioc
  • unity shader可视化编辑
  • python线程启动和暂停
  • 噩梦 gd
  • 深入理解新发展理念
  • 编写javascript代码
  • 在烟台如何发布招聘信息
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设