Як я можу отримати позицію (індекси) найбільшого значення в багатовимірному масиві NumPy?
Відповіді:
argmax()
Метод повинен допомогти.
Оновлення
(Після прочитання коментаря) Я вважаю, що argmax()
метод буде працювати і для багатовимірних масивів. Прикладена документація містить приклад:
>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3
Оновлення 2
(Завдяки коментарю KennyTM ) Ви можете використовувати unravel_index(a.argmax(), a.shape)
індекс у вигляді кортежу:
>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)
unravel_index(a.argmax(), a.shape)
для отримання індексу у вигляді кортежу.
(редагувати) Я мав на увазі стару відповідь, яку було видалено . І прийнята відповідь прийшла після моєї. Я погоджуюсь, що argmax
це краще, ніж моя відповідь.
Чи не було б більш читабельним / інтуїтивно зрозумілим робити таке?
numpy.nonzero(a.max() == a)
(array([1]), array([0]))
Або,
numpy.argwhere(a.max() == a)
Альтернативний спосіб - це змінити numpy
масив на list
та використання max
та index
методи:
List = np.array([34, 7, 33, 10, 89, 22, -5])
_max = List.tolist().index(max(List))
_max
>>> 4