与axis参数一起使用时,我无法理解argmaxargmin的输出。例如:

>>> a = np.array([[1,2,4,7], [9,88,6,45], [9,76,3,4]])
>>> a
array([[ 1,  2,  4,  7],
       [ 9, 88,  6, 45],
       [ 9, 76,  3,  4]])
>>> a.shape
(3, 4)
>>> a.size
12
>>> np.argmax(a)
5
>>> np.argmax(a,axis=0)
array([1, 1, 1, 1])
>>> np.argmax(a,axis=1)
array([3, 1, 1])
>>> np.argmin(a)
0
>>> np.argmin(a,axis=0)
array([0, 0, 2, 2])
>>> np.argmin(a,axis=1)
array([0, 2, 2])

如您所见,最大值是点(1,1),最小值是点(0,0)。因此,按照我的逻辑,当我运行时:
  • np.argmin(a,axis=0)我期望的array([0,0,0,0])
  • np.argmin(a,axis=1)我期望的array([0,0,0])
  • np.argmax(a,axis=0)我期望的array([1,1,1,1])
  • np.argmax(a,axis=1)我期望的array([1,1,1])

  • 我对事物的理解有什么问题?

    最佳答案

    通过添加axis参数,NumPy分别查看行和列。如果未指定,则将a数组展平为单个一维数组。
    axis=0表示该操作是在2D数组a的列中依次执行的。

    例如,np.argmin(a, axis=0)返回四列中每一列的最小值的索引。每列的最小值显示在下面的粗体中:

    >>> a
    array([[ 1,  2,  4,  7],  # 0
           [ 9, 88,  6, 45],  # 1
           [ 9, 76,  3,  4]]) # 2
    
    >>> np.argmin(a, axis=0)
    array([0, 0, 2, 2])
    

    另一方面,axis=1表示该操作跨a行执行。

    这意味着np.argmin(a, axis=1)返回[0, 2, 2],因为a具有三行。第一行的最小值的索引为0,第二行和第三行的最小值的索引为2:
    >>> a
    #        0   1   2   3
    array([[ 1,  2,  4,  7],
           [ 9, 88,  6, 45],
           [ 9, 76,  3,  4]])
    
    >>> np.argmin(a, axis=1)
    array([0, 2, 2])
    

    关于python - numpy:argmin()和argmax()函数的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28697993/

    10-11 20:43
    查看更多