获取numpy数组中最大项的位置

kam*_*ame 69 python arrays indexing numpy

如何才能获得多维numpy数组中最大项的位置?

Man*_*dan 157

argmax()方法应该有所帮助.

更新

(阅读评论后)我相信该argmax()方法也适用于多维数组.链接的文档提供了一个示例:

>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3
Run Code Online (Sandbox Code Playgroud)

更新2

(感谢KennyTM的评论)您可以使用unravel_index(a.argmax(), a.shape)索引作为元组:

>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)
Run Code Online (Sandbox Code Playgroud)

  • 使用`unravel_index(a.argmax(),a.shape)`将索引作为元组. (73认同)
  • 但我有一个多维数组。 (2认同)
  • 确实应该有一个内置函数来获取作为元组的值 (2认同)

ott*_*erb 5

(编辑)我指的是一个已经删除的旧答案。公认的答案是我的。我同意那argmax比我的答案更好。

这样做是否更具可读性/直观性?

numpy.nonzero(a.max() == a)
(array([1]), array([0]))
Run Code Online (Sandbox Code Playgroud)

要么,

numpy.argwhere(a.max() == a)
Run Code Online (Sandbox Code Playgroud)

  • 不必要地缓慢,因为您可以计算最大值,然后将其与所有a进行比较。unravel_index(a.argmax(),a.shape)。 (4认同)