【问题标题】:Python: how to interpret the outcome of np.argmax()?Python:如何解释 np.argmax() 的结果?
【发布时间】:2018-01-25 10:20:53
【问题描述】:

np.argmax() 上的文档说它

沿轴返回最大值的索引。

给出的例子很简单:

In[1]: a = np.arange(6).reshape(2,3)
In[2]: a
Out[2]: array([[0, 1, 2],
       [3, 4, 5]])

In[3]: np.argmax(a)
Out[3]: 5

In[4]: np.argmax(a, axis=0)
Out[4]: array([1, 1, 1]) 

In[5]: np.argmax(a, axis=1)
Out[5]: array([2, 2])

的情况除外

 In[4]: np.argmax(a, axis=0)
 Out[4]: array([1, 1, 1])

既然5对应a[1][2],为什么又返回array([1, 1, 1])

另外,如果我指定

In[6]: b=np.array([[[2,3,4],[4,5,6]],[[3,7,1],[2,5,9]]])
In[7]: b
Out[7]: array([[[2, 3, 4],
        [4, 5, 6]],
       [[3, 7, 1],
        [2, 5, 9]]])

然后求最大值,为什么这两个返回不同的值?

In[8]: b.max()
Out[8]: 9

In[9]: np.argmax(b)
Out[9]: 11

为什么np.argmax() 返回整数11,而这个数字甚至没有出现在数组中?

【问题讨论】:

  • 如果你 ravel 它,它会返回正确的值 IMO。试试 b.ravel()[11] ,索引是 11 你有最大值 9

标签: python arrays numpy max argmax


【解决方案1】:

函数np.argmax() 返回最大值的索引,而不是

在数组a的情况下,数组a中的每一行(您通过指定axis=0来询问每行)在索引1处具有最大值,即345。三行是[0, 3][1, 4][2, 5]。如果您询问argmin(),它会返回array([0, 0, 0])

9 的值是扁平数组b 的索引11 处的元素。

【讨论】:

  • 对,那array([1, 1, 1])呢?
  • 它返回 0,这是一个正确的索引。 numpy 的索引为零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 2014-07-10
  • 2017-05-02
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
相关资源
最近更新 更多