Определить индекс кратного максимума в двумерном массиве - PullRequest
0 голосов
/ 19 января 2020

Допустим, у меня есть 2D-массив с размером элементов mxn. Теперь я хочу получить индексы всех максимумов. Таким образом, результат должен выглядеть примерно так: [(m1, n1), (m2, n2)], где m и n указывают координаты 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)

У кого-нибудь есть идея? Было бы здорово, спасибо!

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Попробуйте:

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

это вернет ось x и ось всех элементов с максимальными значениями. Теперь, для вашего вопроса вы можете сделать

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

для этого последнего кода я смотрю на этот вопрос

0 голосов
/ 19 января 2020

Попробуйте numpy .argmax , он возвращает индексы максимальных значений вдоль оси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...