You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

np.argmax是否总是返回第一个最大值元素的对应索引?

np.argmax 是否会始终返回第一个最大值元素的索引?

答案是肯定的,这个行为是稳定可依赖的。

当数组沿指定轴存在多个数值相等的最大值时,np.argmax 会固定返回遍历过程中遇到的第一个最大值的索引,永远不会返回后续位置的等值最大值索引。你观察到的返回索引10、而非20/30的表现,就是这个规则的直接体现。

你没有在Python层的公开源码中找到对应实现逻辑非常正常:我们日常调用的np.argmax只是Python层封装的对外接口,实际遍历数组、比较数值、记录极值位置的核心逻辑是C层面实现的底层内置方法,不会在Python层源码中展示具体比较流程。

可以通过极简测试复现验证该规则:

import numpy as np
# 测试数组最大值为3,分别位于索引1、4、6
test_arr = np.array([1, 3, 2, 0, 3, -7, 3])
print(np.argmax(test_arr)) 
# 所有版本NumPy运行上述代码都会固定输出1,即第一个最大值的索引

如果你的需求是获取所有最大值对应的索引,np.argmax无法满足,可以使用如下方案:

max_val = test_arr.max()
all_max_pos = np.where(test_arr == max_val)[0]
# 上述示例运行后all_max_pos输出为array([1, 4, 6]),包含所有最大值位置

补充:和np.argmax规则一致,np.argmin在遇到多个等值最小值时,同样会固定返回第一个出现的最小值索引,该行为从NumPy早期版本延续至今,跨版本表现一致,不存在随机返回其他等值极值位置的情况。


内容的提问来源于stack exchange,提问作者Carlos Pinzón

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:57:13