如何无需循环判断PyTorch张量各列是否存在True?
布尔张量列存在性判断(无for循环实现)
给定形状为 torch.Size([2,4,3]) 的布尔张量,需求是判断每一列(最后一维的每个位置)是否存在至少一个 True,输出结果列表 [0,1,1],且不使用for循环。
实现思路
利用PyTorch内置的聚合函数any(),直接对前两个维度(样本维度和行维度)做存在性判断,再将结果转换为整数列表即可:
any(dim=(0, 1)):压缩张量的第0、1维度,对每个列(第2维度的每个索引)判断是否存在True,得到长度为3的布尔张量.int():将布尔值转换为整数(True→1,False→0).tolist():将张量转换为Python列表
代码示例
import torch # 定义题目中的张量 x = torch.tensor([[[False, True, False], [False, True, False], [False, False, True], [False, True, False]], [[False, True, False], [False, False, True], [False, False, True], [False, False, True]]]) # 核心处理逻辑 result = x.any(dim=(0, 1)).int().tolist() print(result) # 输出: [0, 1, 1]
内容的提问来源于stack exchange,提问作者VIArchitect
相关产品推荐
相关产品推荐

