Получение ArgMax из 2d Array
Поэтому мои вопросы довольно просты. У меня есть трехмерный массив, и я хотел бы получить максимальное значение только для первых двух осей.
import numpy as np
array = np.zeros((3,3,2))
array[1][1][0] = 1
array[1][1][1] = 2
Как мне теперь проверить вдоль [1][1], какое значение имеет максимальное значение? Я подозреваю, что использовать np.argmax(), но я гуглил целую вечность и не мог найти рабочее решение. Заранее спасибо!
Чтобы было ясно, я хочу, чтобы мое возвращение было 2, просто одно целое число.
1 ответ
Для того, что вы описываете, вы можете просто сделать:
array[1,1].max()
который вернет 2. Если вы вместо этого хотели получить максимальное значение вдоль последней оси для каждой комбинации первых двух осей, вы должны сделать:
array.max(axis=-1)
который в вашем случае вернет массив максимальных значений 3х3 вдоль последней оси:
[[0. 0. 0.]
[0. 2. 0.]
[0. 0. 0.]]
Если вы хотите, чтобы индексы имели максимальное значение, вы бы вместо этого использовали argmax
так же, как вы бы max
выше:
array[1,1].argmax()
который в этом случае возвращает только 1
, Затем вы должны добавить это к (1,1)
чтобы получить полный индекс до максимального значения в вашем исходном массиве (т.е. (1,1,1)
).