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

TensorFlow中统计形状(?,2)张量对应第二列为0的不同第一列值数量

解决张量中特定列的统计问题

我来帮你搞定这个统计需求!核心就是找出第一列的不同值中,哪些在对应的第二列里出现过0,最后统计这些值的数量。不管用PyTorch还是NumPy都能轻松实现,下面我用PyTorch来演示(毕竟你提到的是张量):

核心思路

咱们分三步走:

  • 第一步:筛选出所有第二列值为0的行,这些行是我们的重点关注对象
  • 第二步:从这些行里提取第一列的数值,然后去重得到唯一值集合
  • 第三步:统计这个唯一值集合的元素个数,就是最终答案

代码实现与示例验证

示例1(你的初始示例)

import torch

# 初始示例张量
T = torch.tensor([[0,1], [0,2], [0,0], [1, 4], [1, 3], [2,0], [2,0], [2,0],[2,0]])

# 步骤1:生成布尔掩码,标记第二列为0的行
mask = T[:, 1] == 0
# 步骤2:筛选出符合条件的行,提取第一列并去重
unique_first_vals = torch.unique(T[mask][:, 0])
# 步骤3:统计数量
count = len(unique_first_vals)

print(count)  # 输出:2,和预期一致

示例2(仅第一列值为2时对应第二列有0)

T2 = torch.tensor([[0,1], [0,2], [0,1], [1, 4], [1, 3], [2,0], [2,0], [2,0],[2,0]])
count2 = len(torch.unique(T2[T2[:,1]==0][:,0]))
print(count2)  # 输出:1,正确

示例3(第一列值为2和3时对应第二列有0)

T3 = torch.tensor([[0,1], [0,2], [0,1], [1, 4], [1, 3], [2,0], [2,0], [2,0],[2,0],[3,0]])
count3 = len(torch.unique(T3[T3[:,1]==0][:,0]))
print(count3)  # 输出:2,正确

简化写法

如果想更简洁,直接把三步合并成一行代码就行:

count = len(torch.unique(T[T[:, 1] == 0][:, 0]))

扩展:用NumPy实现

如果你用的是NumPy数组,逻辑完全一样,只需要替换对应的函数:

import numpy as np

T_np = np.array([[0,1], [0,2], [0,0], [1, 4], [1, 3], [2,0], [2,0], [2,0],[2,0]])
count_np = len(np.unique(T_np[T_np[:,1]==0][:,0]))
print(count_np)  # 输出:2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:37:34