У меня есть 2-мерный массив NumPy. Я знаю, как получить максимальные значения по осям:
>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])
Как мне получить индексы максимальных элементов? Итак, я хотел бы, чтобы на выходеarray([1,1,0])
источник
a = np.array([[1,4,3],[4,3,1]])
увидеть, что он вернетсяi,j==0,1
, и пренебрегайте решением приi,j==1,0
. Для индексов всех максимумов используйте взаменi,j = where(a==a.max()
.argmax()
вернет только первое вхождение для каждой строки. http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.htmlЕсли вам когда-нибудь понадобится сделать это для фигурного массива, это сработает лучше, чем
unravel
:Вы также можете изменить свои условия:
Вышеуказанное дает вам результаты в той форме, которую вы просили. Кроме того, вы можете преобразовать в список координат x, y следующим образом:
источник
indices = np.where(a==a.max())
в виду в строке 3?.max()
вместо.argmax()
. Пожалуйста, отредактируйте ответx_y_coord = [(0, 2), (1, 1)]
что он НЕ соответствует ответу @eumiro и является неправильным. Например, попробуйте с помощью,a = array([[7,8,9],[10,11,12]])
чтобы увидеть, что ваш код не попадает в этот вход. Вы также упоминаете, что это работает лучше, чемunravel
, но решение, опубликованное @blas, отвечает на проблему абсолютного максимума, а не только по одной оси.источник