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


本文介绍了如何使用numpy和skimage库在二维和多维数组中查找最大值的行和列,包括np.max()与np.where()、np.argmax()与np.unravel_index以及skimage.feature.peak_local_max函数,适合处理热力图关键点定位。
最低0.47元/天 解锁文章
2058

被折叠的 条评论
为什么被折叠?



