Skip to main content
 首页 » 编程设计

python之按降序从数组中获取前 N 个元素

2025年05月04日25cyq1162

我有一个数组 [2, 4, 2, 1, 3, 2, 2] 我想按降序获取前 3 个值索引。所以我的输出应该是 [1,4,0​​],它们是数组中前 3 个元素的索引,按降序排列。 (可以容忍类似的项目索引)。我正在使用部分完成我的工作的瓶颈。

import bottleneck 
import numpy as np 
a = np.array([2, 4, 2, 1, 3, 2, 2]) 
b = np.array(bottleneck.argpartsort(-a, 3)[:3]) 
print(b) 

给出 [4 1 5] 是数组的正确前 3(n) 个索引,但不是按降序排列。是否有任何内置函数来调整此输出以提供降序

请您参考如下方法:

你可以使用np.argsort

import numpy as np 
a = np.array([2, 4, 2, 1, 3, 2, 2]) 
b = np.argsort(a)[-3:] 
b = b[::-1] 

注意:最后两行可以进一步简化为(虽然没有太大的计算优势)

b = np.argsort(a)[-3:][::-1] 
# or, as juanpa suggested 
b = np.argsort(a)[-1:-4:-1] 

都给出b的以下值

array([1, 4, 6])