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

如何基于两个条件从两个NumPy数组提取目标数据点及其索引

NumPy多条件筛选索引实现

需求说明

需要从两个NumPy数组x、y中,提取同时满足以下两个要求的元素对应索引:

  • x的取值最接近1
  • 对应位置的y值大于0.96

测试用数组如下:

import numpy as np
x = np.array([0.5, 0.8, 0.99, 0.8, 0.85, 0.9, 0.91, 1.01, 10, 20])
y = np.array([0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 0.99, 0.99, 0.99, 0.85])

该示例预期输出索引为7,对应x值1.01、y值0.99。

实现方案

注意不要先全局找最接近1的x再判断y值,否则如果全局最接近1的点y不满足阈值,会得到错误结果。正确逻辑是先过滤出所有y值达标的候选位置,再在候选集中找x最接近1的索引。

完整实现代码:

# 第一步:生成掩码,筛选所有y>0.96的位置
valid_mask = y > 0.96
# 拿到所有符合y条件的候选索引
valid_indices = np.where(valid_mask)[0]
# 在候选索引范围内,找x与1差值绝对值最小的位置,即为目标索引
target_idx = valid_indices[np.argmin(np.abs(x[valid_indices] - 1))]

运行上述代码后target_idx的输出为7,和预期结果一致。

逻辑验证

如果直接全局计算最接近1的x,会得到索引2(对应x=0.99),但该位置y值为0.8,不满足大于0.96的要求,因此必须先做y值过滤再匹配最接近1的x。

内容的提问来源于stack exchange,提问作者Ben Watson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:12:43