Как использовать argmax в массиве numpy

#python #machine-learning #numpy-ndarray

Вопрос:

Я использую глубокое обучение Keras на Python. У меня есть массив numpy, который имеет такую форму: [5, 30, 30, 30, 65] Я хочу выполнить argmax по 5-му измерению (65), установив индекс наибольшего значения в каждом 5-м массиве равным 1, а для всех остальных-0. Для контекста массив выводится моделью генератора, и я использую последнее измерение длины 65 в качестве одноразовой кодировки. Как бы я это сделал?

Ответ №1:

Чтобы выполнить argmax операцию с 5-м измерением, вы можете указать axis параметр, используя подсчет на основе 0.

Поэтому, чтобы получить argmax для 5-го измерения, вы бы использовали:
idx = np.argmax(arr, axis=4)[0, 0, 0, 0]

Затем, чтобы скрыть массив 5-го измерения в однократной кодировке, вы можете установить этот массив в np.zeros массив, а затем обновить значение idx (сверху) до 1 следующим образом:

 arr[a, b, c, d] = np.zeros((65,))
arr[a, b, c, d, idx] = 1
 

где a , b , c , и d являются краткими индексами вдоль 1-го по 4-е измерения.