Получение 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)).

Другие вопросы по тегам