найти индексы максимального значения в матрице (питоне) - PullRequest
0 голосов
/ 25 ноября 2018

Я хочу найти индексы [i, j] максимального значения в двумерном массиве:

a = numpy.array([[1,2,3],[4,3,1]])

Я попытался сделать это с помощью numpy.argsort (), но он возвращает массив, потому чтоэто можно сделать только вдоль оси.Одним из решений может быть сравнение элементов по всем индексам (по обеим осям), возвращаемым аргументом argsort с использованием циклов for, но это кажется довольно сложным для этого.Может быть, есть простое решение?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Вы хотите np.unravel_index.np.argmax вернет индекс, как если бы пересеченная версия массива была пройдена.unravel_index даст вам индексы N-D.

a = np.random.randint(0, 10, (4,4))
ind = np.unravel_index(np.argmax(a, axis=None), a.shape)  # returns a tuple
0 голосов
/ 25 ноября 2018

Может быть, это может вернуть то, что вы ищете?Возвращает индекс max (

max_xy = np.where(a == a.max() )

. Zip результат, чтобы получить индекс в виде списка кортежей:

zip(max_xy[0], max_xy[1]) #=> [(1, 0)]

В случае более одного максимума: a = np.array([[4,2,3],[4,3,4]]),он возвращает #=> [(0, 0), (1, 0), (1, 2)]

Чтобы вернуть в качестве кортежа первый найденный максимум, просто извлеките первый элемент массива:

zip(max_xy[0], max_xy[1])[0] #=> (0, 0)
...