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

NumPy按条件获取沿轴最大值索引 不满足阈值返回-1

NumPy按阈值取行最大值索引实现

原有代码问题

之前的实现存在逻辑漏洞:将所有≤0.9的元素替换为-1后,如果某一行没有元素大于0.9,整行值都会是-1,此时np.argmax遇到多个相等的最大值时,会默认返回第一个元素的索引0,因此输出了不符合预期的array([2, 0])。

正确简洁实现

不需要提前替换数组元素,先分别计算每行的最大值、每行最大值的索引,再通过阈值判断给不满足条件的行赋值-1即可:

import numpy as np
arr = np.array([[0.6,0.9,1],[0.3,0.5,0.7]])

result = np.where(arr.max(axis=1) > 0.9, arr.argmax(axis=1), -1)

运行上述代码可以得到预期输出array([ 2, -1])。

逻辑说明

  • arr.max(axis=1):沿列轴方向计算每一行的最大值,示例中得到结果[1. 0.7]
  • arr.argmax(axis=1):沿列轴方向取每一行最大值对应的列索引,示例中得到结果[2 0]
  • np.where:逐行判断最大值是否大于0.9,满足条件则保留对应索引,不满足则直接赋值为-1,避免了全-1行取argmax得到错误索引的问题。

内容的提问来源于stack exchange,提问作者Satheesh K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:15:31