numpy 2d array max / argmax

У меня есть матрица numpy:

>>> A = np.matrix('1 2 3; 5 1 6; 9 4 2') >>> A matrix([[1, 2, 3], [5, 1, 6], [9, 4, 2]]) 

Я хотел бы получить индекс максимального значения в каждой строке вместе с самим значением. Я могу получить индексы для максимумов, используя A.argmax (ось = 1), в этом случае я бы получил:

 >>> indices = A.argmax(axis=1) >>> indices matrix([[2], [2], [0]]) 

Как я могу использовать массив «индексы» для получения массива максимальных значений для каждой строки в матрице? Есть ли способ сделать это более эффективно или в одной операции? Есть функция, которая возвращает значения вместе с их координатами строк и столбцов?

One Solution collect form web for “numpy 2d array max / argmax”

Вы можете индексировать индексирование с использованием индексов np.arange(len(A)) для первого измерения (так как вы хотите получить значение для каждой строки), а ваши индексы (сжатые), которые соответствуют индексу в каждой строке, во втором измерении :

 A[np.arange(len(A)) , indices.squeeze()] => matrix([[3, 6, 9]]) 
  • Что делает matplotlib `imshow (интерполяция = 'ближайший')` делать?
  • Обмен столбцами в массиве numpy?
  • Использование scipy kmeans для кластерного анализа
  • Панды заменяют элементы, не работающие
  • Как преобразовать набор python в массив numpy?
  • изменение типов структурированных / записываемых массивов
  • Взвешенный выбор короткий и простой
  • Можно ли использовать argsort в порядке убывания
  • Python - лучший язык программирования в мире.