我知道如何在列表中获得n个最高值但是我想要一个快速函数来获得坐标对的最高y值。
我知道以下内容给出了列表中的n个最高值
[a[i] for i in np.argsort(a)[-n:]]
但我真正想要的是提供表格的坐标
[[1,2], [3,4], [6,2], [6,11], [1,5]]
并从中获得具有最高y值的n坐标,即n = 2
[[6,11], [1,5]]
但我无法完成最后一步。不必使用除numpy之外的外部库将是一个奖励。我尝试更改argsort的轴(列表,轴= 0),但这不起作用。感谢
答案 0 :(得分:4)
作为替代方案,请回答您可以使用rstudio
中的nlargest
heapq
答案 1 :(得分:3)
problem=closed
函数采用命名参数sorted
,用于计算每个值的比较键。
key
答案 2 :(得分:2)
只需使用第二个坐标作为键对列表进行排序,然后打印最后两个项目:
z = [[1,2], [3,4], [6,2], [6,11], [1,5]]
print(sorted(z,key=lambda x:x[1])[-2:])
结果:
[[1, 5], [6, 11]]
答案 3 :(得分:1)
以下是基于NumPy的np.argsort
-
n = 2 # Number of entries to keep
arr = np.asarray(input_list) # Convert to array for further processing
out = arr[arr[:,1].argsort()[-n:]].tolist()
另一个基于NumPy的人,np.argpartition
-
out = arr[(-arr[:,1]).argpartition(n,axis=0)[:n]].tolist()