查找向量的 N 个最高值

Posted

技术标签:

【中文标题】查找向量的 N 个最高值【英文标题】:Finding the N highest values of a vector [duplicate] 【发布时间】:2019-01-18 03:35:35 【问题描述】:

如何找到向量的 N 个最大值? 假设我有一个向量:

arr = np.array([12.5, 13.6, −9.1, 17.5, 15.3, 10.5])

N = 3

输出应该是:

np.array([13.6,17.5,15.3])

所以 arr 的 3 个最高值保持相同的顺序。

如果 N=4,输出应该是:

np.array([12.5,13.6,17.5,15.3])

【问题讨论】:

克隆阵列。订购克隆的阵列。从第 n 个位置删除所有元素。按顺序从原始数组中删除不在新数组中的元素。 结果数组的元素按照它们在前一个数组中的顺序是否重要? 我想@PatrickHaugh 如果不是,他只需要订购它并从 fowards 的第 n 个位置删除元素 是的,@PatrickHaugh 【参考方案1】:

您可能喜欢heapq.nlargest() 方法。它允许您使用线性时间获取任何集合中的n 最大元素。 IE。您无需花费O(n*log n) 时间对原始集合进行排序。

import heapq

n = 4
print(np.array(heapq.nlargest(n, arr)))

【讨论】:

以上是关于查找向量的 N 个最高值的主要内容,如果未能解决你的问题,请参考以下文章

从向量数组中查找给定向量中公共元素的数量

查找向量中的最小项目列表

按组查找向量中最常见的组合

线性基

超平面多维近似向量查找工具annoy使用总结

查找地图中的最大值