方法一:
在数组无序且没有重复元素时,可以考虑用heapq模块进行抽出最大的几个元素,用map进行键值对的匹配,返回最大(最小)的几个元素的索引值。
import heapq
# 获取list中最大(最小)的n个值
heapq.nlargest(n, list)
heapq.nsmallest(n, list)
# 获取list中最大几个值的索引的列表
list(map(list.index, heapq.nlargest(n, list)))
list(map(list.index, heapq.nsmallest(n, list)))
在有重复元素时并不能使用该方法,会出现键值匹配混乱。
方法二:
数组无序且有重复元素时,可以考虑使用pandas模块,先对一位数组进行索引匹配,然后排序,返回最大(最小)的多个值的索引。
import pandas as pd
# 对list数组元素进行排序(默认从小到大)
pd.Series(list).sort_values()
pd.Series(list).sort_values(ascending = False) # 从大到小
# 选取list数组元素中最大(最小)的n个值的索引
pd.Series(a).sort_values().index[:n].
pd.Series(a).sort_values(ascending = False).index[:n]