python如何获取NumPy数组中前N个最大值的索引?
以下代码基于jupyter notebook
## 创建一个array
a = np.array([ 0.80278087, 16.00330519, 11.83966578, 9.14129425, 4.86049127,6.10701755, 20.61007086, 7.81676146, 7.59778026, 9.14129425])
print(a)
>>>输出结果
array([ 0.80278087, 16.00330519, 11.83966578, 9.14129425, 4.86049127,
6.10701755, 20.61007086, 7.81676146, 7.59778026, 9.14129425])
使用argsort函数进行从小到大排列并获得索引值
a.argsort()
>>>输出结果
array([0, 4, 5, 8, 7, 3, 9, 2, 1, 6], dtype=int64)
从后往前获取前k个索引
k = 3 #前k个
b = a.argsort()[-k:]
print(b)
>>>输出结果
array([2, 1, 6], dtype=int64) #从小到大前3个的索引
反转成从大到小排列
c = b[::-1]
print(c)
>>>输出结果
array([6, 1, 2], dtype=int64)
全部代码
a = np.array([ 0.80278087, 16.00330519, 11.83966578, 9.14129425, 4.86049127, 6.10701755, 20.61007086, 7.81676146, 7.59778026, 9.14129425])
k = 3 #前k个
b = a.argsort()[-k:][::-1] #获取前k个索引
print(b)
>>>输出结果
[6 1 2]