Python输出数组中不重复的最大n个值的索引
输出可能重复的最大n个值的索引
import numpy as np
n = 2
a = [4, 5, 5, 1, 2, 3]
a = np.array(a) # 将列表转化为数组
sorted_indices = np.argsort(-a) # argsort函数输出的是由小至大的排序的索引,因此加-输出由大至小的排序的索引
max_indices = sorted_indices[:n] # 取最大n个值的索引
print(max_indices)
# [1 2] # 可以看到输出的是5 5的索引
输出不重复的最大n个值的索引
由于没有找到直接可以使用的函数,因此用笨办法,首先筛选出a数组中不重复的值,接着就可以通过找不重复的最大两个值对应的索引。
import numpy as np
n = 2
a = [4, 5, 5, 1, 2, 3]
a = np.array(a) # 将列表转化为数组
unique_a = np.unique(a)[::-1] # unique会将不重复的a按照从小至大进行排序,因此加[::-1]逆序
sorted_indices = []
for value in unique_a:
id = np.where(a==value)[0][0] # 只要某值对应的第一个索引
sorted_indices = np.append(sorted_indices, id)
sorted_indices = sorted_indices.astype(int)
max_indices = sorted_indices[:n]
print(max_indices)
# [1 0] # 输出的是5 4的索引
涉及到的函数
argsort
参考
https://blog.csdn.net/u011475210/article/details/77770751
unique
参考
https://blog.csdn.net/sinat_38682860/article/details/111923873
where
参考
https://blog.csdn.net/a_2435542821/article/details/86997644
append
参考
https://blog.csdn.net/wangyuxiang946/article/details/122142534