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

如何基于同尺寸数组Y的条件提取二维Numpy数组X的目标索引

解决方案

要获取同时满足y_original > threshold_y且x_original为该筛选范围内最大值的原始行列索引,可以通过组合布尔掩码的方式直接定位,步骤如下:

步骤1:生成Y值的过滤掩码

先创建一个和原数组同尺寸的布尔数组,标记所有Y值满足阈值的位置:

import numpy as np

# 生成Y值满足条件的布尔掩码
y_mask = y_original > threshold_y

步骤2:计算筛选范围内的X最大值

基于上述掩码,直接计算符合Y条件的X值中的最大值:

max_x_filtered = x_original[y_mask].max()

步骤3:构建组合条件掩码

同时满足Y阈值条件和X等于最大值的掩码:

combined_mask = y_mask & (x_original == max_x_filtered)

步骤4:获取原始行列索引

用np.nonzero或np.argwhere提取原始索引:

# 方式1:返回两个数组,分别对应行、列索引
row_idx, col_idx = np.nonzero(combined_mask)

# 方式2:返回N×2的数组,每一行是[行索引, 列索引]
indices = np.argwhere(combined_mask)

为什么之前的方法不适用?

  • np.argmax(x_original[filteredY[0],filteredY[1]])返回的是筛选后子数组的索引,无法直接映射回原数组的位置;
  • np.argwhere(x_original==max_x_filtered)仅匹配X值等于最大值的位置,没有结合Y值的过滤条件,会包含不符合Y阈值的无效索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:43:14