从Python 3中的坐标对列表中获取n个最高y值

时间:2016-12-02 18:16:17

标签: python list

我知道如何在列表中获得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),但这不起作用。感谢

4 个答案:

答案 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()