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

如何使用Numpy实现类位掩码数组比较,校验指定位置数值是否大于0

Numpy 快速校验实现方法

直接通过布尔索引加all()方法一行即可完成校验,代码示例如下:

import numpy as np

# 先将列表转为numpy数组(如果本身已经是numpy数组可跳过这步)
scale = np.array([1,0,0,0,1,0,0,0,1,0,0,0])
data1 = np.array([8,2,0,1,0,0,1,0,1,0,0,0])
data2 = np.array([8,0,0,0,1,0,1,0,1,0,0,0])

# 核心校验逻辑
def validate(scale_arr, data_arr):
    return (data_arr[scale_arr == 1] > 0).all()

# 测试
print(validate(scale, data1)) # 输出 False,校验不通过
print(validate(scale, data2)) # 输出 True,校验通过

逻辑说明

  1. scale_arr == 1 生成和scale等长的布尔数组,所有scale取值为1的位置对应布尔值为True
  2. data_arr[scale_arr == 1] 取出data中所有scale为1的位置的元素
  3. 对取出的元素逐一判断是否大于0,生成布尔数组
  4. 用all()方法判断该布尔数组是否全为True,全为True即满足所有校验条件

如果需要定位不满足要求的位置,可使用以下代码获取索引:

# 返回所有不满足要求的位置索引(默认从0开始计数,需要1开头计数直接加1即可)
invalid_indexes = np.where((scale == 1) & (data <= 0))[0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 12:30:03