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

Numpy中如何筛选指定列范围内存在取值为True的所有行

Numpy筛选指定列存在1的行的实现方法

核心逻辑是利用np.any()沿行方向判断指定列范围内是否存在符合条件的值,三步即可完成:

  1. 选中待检查的指定列,生成布尔矩阵标记值为1的位置
  2. 沿axis=1(行维度)执行任意满足判断,得到行筛选掩码
  3. 用掩码索引原数组得到结果
完整示例代码
import numpy as np

# 示例输入数组
data = np.array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 1., 0., 0., 0., 1., 0., 0., 1.,  1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,],
                 [0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 0., 0., 0., 0.,  0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,],
                 [0., 0., 1., 0., 0., 0., 1., 1., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 1., 0., 0.,  0., 0., 0., 0., 1., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 1., 0., 0., 0., 0.,  1., 0., 0., 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.,],
                 [0., 0., 0., 1., 0., 1., 0., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 0., 0., 1., 0.,  0., 1., 1., 1., 0., 0., 0., 1., 0., 1., 0., 1., 0., 1., 1., 0., 0., 1., 0., 0., 1., 0., 1., 1.,  0., 0., 0., 0., 1., 1., 0., 1., 1., 0., 1., 1., 0., 0.,],
                 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 1., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.,],
                 [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,],
                 [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,]])

# 替换为你需要检查的列索引
target_cols = [1,2,5]
# 生成行筛选掩码
row_mask = np.any(data[:, target_cols] == 1., axis=1)
# 得到筛选结果
filtered_data = data[row_mask]
结果说明

针对示例中target_cols = [1,2,5]的场景,运行后得到的filtered_data为原数组索引为2、3、6的三行,符合「指定列存在至少一个1」的筛选要求。
如果需要检查连续列范围,直接用切片替换离散列索引即可,比如检查第1到第5列(左闭右开)可以写为data[:, 1:6]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:04