- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我有一个数字列表:
my_list = [3, 8, 4, 2, 8, 1, 1, 2, 5, 1]
我现在想找到这个列表中 2 个最大数字的索引。所以,我尝试:
import heapq
max_vals = heapq.nlargest(2, my_list)
index1 = my_list.index(max_vals[0])
index2 = my_list.index(max_vals[1])
print index1
print index2
这里,index1
和index2
都是1
。这是因为 max_vals
对两个值都有 8
,而 my_list.index()
只搜索 8< 的第一个实例
.
在这种情况下,如何获得前 2 个值的索引,例如 index1
和以前一样是 1
,但是 index2
是现在 4
,对应列表中的其他 8
?
附带说明一下,在列表中找到最大值,然后再找到该值的索引似乎效率很低。有没有一种方法可以在一次扫描列表中实现这一点?
谢谢。
最佳答案
您可以在 enumerate(list)
上应用 heapq.nlargest
”
>>> import heapq
>>> data = heapq.nlargest(2, enumerate(my_list), key=lambda x:x[1])
>>> indices, vals = zip(*data)
>>> indices
(1, 4)
>>> vals
(8, 8)
关于Python 列出 : indices of heapq. nlargest,列表中有重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22076427/
我正在尝试使用“最大”获取前“n”个结果,但我认为这种行为很奇怪。如果有人能帮助我理解为什么会出现这种行为,那就太好了。 filter = pd.DataFrame([['user1','item2'
我有一个数据框 ID CAT SCORE 0 0 0 8325804 1 0 1 1484405 ...
我有一本包含 {key: count} 的字典,比如说status_count = {'管理分析':13859,'计算机程序员':72112}我正在尝试为 heapq.nlargest() 编写一个键
我想获取数据集中每年前 10 个“净利润”的平均值,并将其存储在新的 df 中。这是我目前所拥有的。 #loading the csv file df = pd.read_csv('tmdb-movi
努力将 .nlargest() 应用于我的 groupedby 数据,以便仅显示每个索引的总收入最大的 10 个 [0] Groupedby 数据如下所示: 当我运行时: grp_data.n_lar
我有以下示例 DataFrame 定义如下: df1 = pandas.DataFrame(data = {"Age":[28, 3, 32, 18], "Student":[False, True,
我在看 this pycon talk, 34:30演讲者说得到t n 列表中的最大元素元素可以在 O(t + n) 中完成. 这怎么可能?我的理解是创建堆将是 O(n) ,但是 nlargest 的
有谁知道如何将 heapq.nlargest 与百分比而不是数字一起使用?目前我有 heapq.nlargest(187030, y) 但这让我得到了前 187030 个数字。我需要它来为每个数组获取
这是 Pandas 文档 v0.22.0 中的示例: In [330]: df = pd.DataFrame({'a': [-2, -1, 1, 10, 8, 11, -1],
我有一个如下所示的DataFrame: name value date 2016-05-01 kelly 20 2016-05-05 john
此问题是以下帖子的延伸:select largest N of a column of each groupby group using pandas 让我们使用相同的 df 和所选答案中提出的解决方
我有这个数据集: Id query count 001 abc 20 001 bcd 30 001 ccd 100 002 ace 13 002 ahhd 30
我有一个 Dataframe df,我尝试在其中使用 groupby 和 nlargest ,但无法获得我想要的输出: Date Symbol Count 0 20
这个问题在这里已经有了答案: Pandas groupby nlargest sum (2 个答案) 关闭 6 年前。 我有一个这样的数据框: Index STNAME COUNTY COU
假设我有一个数字列表: my_list = [3, 8, 4, 2, 8, 1, 1, 2, 5, 1] 我现在想找到这个列表中 2 个最大数字的索引。所以,我尝试: import heapq max
我有每周的贸易导出时间序列数据,我需要制作堆积条形图来可视化贸易事件。为此,我汇总了所有行的每一列的总和数据,然后使用 nlargest() 选择前 n 列。但是,这样做可能不太准确,因为我在循环中为
因此,使用 .nlargest 我可以从数据框中获取前 N 个值。 现在如果我运行以下代码: df.nlargest(25, 'Change')['TopN']='TOP 25' 我希望将 TopN
因此,使用 .nlargest 我可以从数据框中获取前 N 个值。 现在如果我运行以下代码: df.nlargest(25, 'Change')['TopN']='TOP 25' 我希望将 TopN
我想检索与包含 n 个最大值的列集相对应的 n 个列名。然后,仅当值高于给定阈值时,这些名称才会保留在列表中。 举个例子,给定三列“Paul”、“Eric”、“Marc”,假设我最多需要 2 个列名,
我从下面的列表中构建了一个 DataFrame df_list_1 = [{"animal": "dog", "color": "red", "age": 4, "n_legs": 4,},
我是一名优秀的程序员,十分优秀!