【问题标题】:Detect index of multiple maximum in a 2D array检测二维数组中多个最大值的索引
【发布时间】:2020-01-19 10:58:30
【问题描述】:

假设我有一个大小为 m x n 个元素的二维数组。 现在,我想获得所有最大值的索引。所以结果应该是这样的: [(m1, n1), (m2, n2)] 其中mn 表示我的最大值的x 和y 坐标。

只有一个最大值很容易,但如果多了,我就卡住了。

import numpy as np

pixel = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 189, 12, 0, 0, 1, 0, 0, 0, 0],
                  [0, 6, 0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 1, 0, 0, 0, 203, 9, 0],
                  [0, 0, 0, 0, 0, 0, 0, 12, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 5, 245, 0, 0, 0, 7, 4, 0],
                  [0, 0, 0, 0, 0, 0, 0, 250, 8, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
result = np.where(pixel == pixel.max())

print("cross detection at y:", result[0][0], "x:", result[1][0])

print(pixel)

有人有想法吗?太好了,谢谢!

【问题讨论】:

  • 你能定义这些最大值是多少吗?
  • 你的问题不清楚。
  • 第二次尝试:基本上我有一个包含一些模糊点的图像,我想检测这些点所在的像素。例如,我有 4 个点,而不是我期望的具有 4 个 x,y 坐标的列表。由于成像结构,我知道两点不能接近 20 像素。也许现在它变得更清楚了..

标签: python arrays numpy indexing 2d


【解决方案1】:

试试numpy.argmax,它会返回沿轴的最大值的索引。

【讨论】:

    【解决方案2】:

    试试这个:

    x,y = np.where(pixel == np.max(pixel))
    

    这将返回具有最大值的所有元素的 x 轴和 y 轴 现在,对于您的问题,您可以这样做

    np.array((x,y)).T 
    

    for this last code I look up to this question

    【讨论】:

    • 你能添加一个解释来解释这是做什么的吗?
    • @squareskittles 这将返回所有 x 轴的数组和具有最大值的元素的所有 y 轴的数组。
    • 请编辑您的答案以包含此解释。
    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2014-01-16
    • 2012-01-15
    • 2014-03-05
    相关资源
    最近更新 更多