Как я могу получить позицию самого большого элемента в многомерном массиве numpy?
Получить позицию самого большого элемента в многомерном массиве
Ответ 1
Метод argmax()
должен помочь.
Обновление
(После чтения комментария) Я считаю, что метод argmax()
будет работать и для многомерных массивов. Приведенная документация дает пример:
>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3
Обновление 2
(Спасибо KennyTM) Вы можете использовать unravel_index(a.argmax(), a.shape)
, чтобы получить индекс как кортеж:
>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)
Ответ 2
(edit) Я имел в виду старый ответ, который был удален. И принятый ответ пришел после моего. Я согласен, что argmax
лучше, чем мой ответ.
Не было бы более удобочитаемым/интуитивным делать это?
numpy.nonzero(a.max() == a)
(array([1]), array([0]))
Или
numpy.argwhere(a.max() == a)
Ответ 3
Вы можете просто написать функцию (которая работает только в 2d):
def argmax_2d(matrix):
maxN = np.argmax(matrix)
(xD,yD) = matrix.shape
if maxN >= xD:
x = maxN//xD
y = maxN % xD
else:
y = maxN
x = 0
return (x,y)