我有以下两列数组。我想确定第二列中的前3个最高值,并删除不包含前3个值的所有行。
array([[0, 3],
[1, 4],
[2, 5],
[3, 5],
[4, 2]])
输出:
array([[2, 5],
[3, 5],
[1, 4]])
答案 0 :(得分:1)
您可以使用numpy argsort并获取最后3行
array_name[np.argsort(array_name, axis = 0)[:,1]][-3:]
答案 1 :(得分:1)
由于排序仅需要在第二列上进行,因此可以使用pandas
。它使事情变得容易一些:
import pandas
In [725]: x
Out[725]:
array([[0, 3],
[1, 4],
[2, 5],
[3, 5],
[2, 4]])
In [724]: pd.DataFrame(x).sort_values(1, ascending=False).head(3).values.tolist()
Out[724]: [[2, 5], [3, 5], [1, 4]]
答案 2 :(得分:0)
我认为这可能对您有帮助
x = ([[0, 3],[1, 4],[2, 5],[3, 5],[4, 2]])
f = sorted(x, key=lambda x: x[1])
print(f[2:])
通过this链接
答案 3 :(得分:0)
尽管我同意Anagnostou John的意见,但我建议像这样更改它:
a = np.array([[0, 3],
[1, 4],
[2, 5],
[3, 5],
[4, 2]])
f = sorted(a, key=lambda x: -x[1])
print(f[:3])
因为它也可以用于更大的数组。