python – 以argmax为键对数组/矩阵进行排序是什么意思?

我正在努力理解围绕numpy排序主题的函数背后的机制.

    import numpy as np
    arr = [[8, 5, 9], 
            [3, 9.5, 5], [5.5, 4, 3.5], [6, 2, 1],
            [6,1,2],[3,2,1],[8,5,3]]
    res = sorted(arr, key=np.argmax)

这给了我以下结果:

    print(res)
    [[5.5, 4, 3.5], [6, 2, 1], [6, 1, 2],
      [3, 2, 1], [8, 5, 3], [3, 9.5, 5], [8, 5, 9]]  

我是R用户,对Python不太熟悉.我可能对“关键”论点的作用有一些线索,但对于这个例子我特别请求你的帮助.
在一个简单的例子中,如果key参数被定义为返回第一个元素的函数,那么sorted,基于它的第一个元素对数组进行排序,但是我无法看到它如何与argmax一起工作.
谢谢,

最佳答案 argmax函数返回最大元素的指示.它用作sort函数中的键.

如果你打印这个:

print([np.argmax(x) for x in arr])

你得到:

[2, 1, 0, 0, 0, 0, 0]

这解释了排序.最后一个元素首先出现在结果中,第一个元素最后出现,因为它具有最高标准,第二个元素出现在之前.

当然这是一个“弱”排序,因为标准通常返回相同的值,因此结果取决于初始列表的顺序(编辑:这称为稳定排序,请参阅有趣的Bakuriu评论)

点赞