python学习 - 如何获取NumPy数组中前N个最大值的索引?

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]

你可能感兴趣的:(学习资料记录,python)