Python:如何解释np.argmax()的结果?

时间:2018-01-25 10:20:54

标签: python arrays numpy max argmax

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,当数字甚至没有出现在数组中时?

1 个答案:

答案 0 :(得分:2)

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

对于数组a,数组a中的每一行(您要求每行,通过指定axis=0)在索引1处具有最大值,即{ {1}},34。这三行是5[0, 3][1, 4]。如果您询问[2, 5],则会返回argmin()

array([0, 0, 0])的值是展平数组9的索引11处的元素。