【问题标题】:arg max of a matrix, indices for maximum elementarg max 矩阵,最大元素的索引
【发布时间】:2016-12-05 15:46:44
【问题描述】:

考虑下面这张 Python 3.5 中我的 numpy 矩阵的图片。 A 是一个形状为 (35,50) 的矩阵。

包含np.max(A) 的行返回最大值的正确值,在我的数据集中,最大值确实是 2372。但是,当我尝试重现此处所示的 numpy 文档时:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.argmax.html

我没有得到与文档中的结果相似的结果。所有的索引对都是不同的。我尝试了第一个索引对:A[18][29],但它是值为 506 的元素的索引,当时我认为这只会返回矩阵最大值的索引。这给我留下了 2 个问题:

  1. 如果这些索引对不是矩阵最大值的索引,即np.max(A),那么它们是什么?

  2. numpy 是否有办法返回矩阵中实际元素的索引,任何给定的形状(我的形状是 35,50)?理想情况下,如果我输入:A[row_index][column_index],我希望输出是一个标量元素,其值等于np.max(A),在我的情况下,该值是 2372。

我不确定为什么它没有按照我期望的方式工作,如果我不得不猜测,我会说它与数组中的数组有关,或者我只是没有使用正确的 numpy 扩展。

请指教,

谢谢

【问题讨论】:

    标签: python-3.x numpy


    【解决方案1】:

    row_index是每列最大的索引,50列,50个索引。

    col_index是每行最大值的索引,35个值。

    将这两个数组中的值配对是没有意义的。是的,其中一对将是整个数组最大值的索引,但您无法仅通过查看它们来判断。

    ==========================

    In [573]: x
    Out[573]: 
    array([[15,  8,  6,  3,  4,  5],
           [22,  1, 13, 10, 18,  7],
           [21, 14, 20, 16,  9,  2],
           [11, 12, 23, 19, 17,  0]])
    In [574]: i0=np.argmax(x,axis=0)
    In [575]: i1=np.argmax(x,axis=1)
    In [576]: i0
    Out[576]: array([1, 2, 3, 3, 1, 1], dtype=int32)
    In [577]: i1
    Out[577]: array([0, 0, 0, 2], dtype=int32)
    

    要获取最大值,我们必须将这些索引与np.arange 的正确形状结合起来。

    In [578]: x[i0,np.arange(6)]
    Out[578]: array([22, 14, 23, 19, 18,  7])
    In [579]: x[np.arange(4),i1]
    Out[579]: array([15, 22, 21, 23])
    

    23 存在于两者中,但不在同一索引中

    In [580]: np.argmax(x)
    Out[580]: 20               # location in the flattened version of x
    In [581]: x.flat[20]
    Out[581]: 23
    In [582]: x[i0[2], i1[3]]   # (3, 2)
    Out[582]: 23
    

    要将平面索引转换为 2d,请使用:

    In [583]: np.unravel_index(20,x.shape)
    Out[583]: (3, 2)
    In [584]: x[3,2]
    Out[584]: 23
    

    【讨论】:

    • 很好的解释,感谢您帮助我了解这些 numpy 扩展应该如何工作
    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多