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]]) 
  • многократные формы умножения матрицы
  • Как можно вычислить эвклидовое расстояние с помощью numpy?
  • Вызов функций статистики из Scipy
  • Значение 0x и \ x в шестнадцатеричных строках python?
  • numpy сокращение для взятия зубчатого среза
  • Индексы фиксированных размерных подматриц матрицы numpy
  • Преобразование списка python с значениями None в массив numpy с значениями nan
  • Управление левой матрицей и решение Numpy
  • Выбор протокола Python?
  • Вызов BLAS / LAPACK напрямую с помощью интерфейса SciPy и Cython
  • Левая обратная в numpy или scipy?
  • Python - лучший язык программирования в мире.