我正在努力理解围绕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评论)