PyTorch中按张量值删除行:寻求类似pandas drop的简洁方案
PyTorch 删除指定值的行(已知行值未知索引)
可以通过逐行匹配目标值+布尔索引的方式实现简洁的删行操作,无需手动拼接张量:
import torch x = torch.tensor([ [1,2,3,4], [5,6,7,8], [9,10,11,12] ]) # 定义要删除的目标行 target_row = torch.tensor([5, 6, 7, 8]) # 生成掩码:判断每一行是否与目标行完全匹配,取反后筛选保留的行 mask = ~torch.all(x == target_row, dim=1) result = x[mask] print(result) # 输出: # tensor([[ 1, 2, 3, 4], # [ 9, 10, 11, 12]])
关键逻辑说明:
x == target_row:对张量的每个元素做相等性判断,得到与原张量形状一致的布尔张量torch.all(..., dim=1):沿行维度(dim=1)取逻辑与,生成一维布尔张量,标记每行是否完全匹配目标行~对掩码取反,得到需要保留的行的标记,最后通过布尔索引x[mask]直接得到删行后的结果
内容的提问来源于stack exchange,提问作者David Siret Marqués
相关产品推荐
相关产品推荐

