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

如何在PyTorch中仅对特定值使用torch.eq()实现元素级相等判断?

实现仅统计两个张量中数值为1且对应位置相等的元素数量

当然可以搞定这个需求!核心思路就是先筛选出两个张量对应位置同时为1的元素,再统计它们的数量,我给你两种实用的实现方式:

  • 分步清晰版:先分别生成两个张量等于1的掩码,再取逻辑交集,最后求和

    import torch
    
    # 示例张量(多维张量也适用)
    tensor_a = torch.tensor([[1, 0, 1], [0, 1, 0]])
    tensor_b = torch.tensor([[1, 1, 1], [1, 1, 0]])
    
    # 1. 生成各自等于1的掩码(布尔张量,True表示对应位置是1)
    mask_a = tensor_a == 1
    mask_b = tensor_b == 1
    
    # 2. 找出同时满足两个条件的位置(逻辑与操作)
    both_one_mask = mask_a & mask_b
    
    # 3. 统计数量:布尔张量中True等价于1,直接求和后转成Python数值
    target_count = both_one_mask.sum().item()
    
    print(target_count)  # 输出3,对应(0,0)、(0,2)、(1,1)这三个位置
    
  • 简洁一行版:把判断合并成一步
    如果觉得分步写太啰嗦,可以把逻辑整合到一行里,效果完全一样:

    target_count = (torch.eq(tensor_a, tensor_b) & (tensor_a == 1)).sum().item()
    

    这里torch.eq(tensor_a, tensor_b)先找出两个张量对应位置相等的元素,再和tensor_a == 1取交集,就精准定位到了「相等且值为1」的位置,最后求和统计数量。

额外提示:如果需要按特定维度统计(比如每行的符合条件元素数),可以给sum()加上dim参数,比如sum(dim=1)就会返回每行的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:20:54