如何检查不同张量中的张量值?

2024-04-19 04:39:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个大小不等的张量

a = torch.tensor([[1,2], [2,3],[3,4]])
b = torch.tensor([[4,5],[2,3]])

我想要一个布尔数组,用于确定每个值是否存在于另一个张量中,而无需迭代。差不多

a in b

结果应该是

[False, True, False]

因为只有a[1]的值在b中


Tags: infalsetruetorch数组tensor
3条回答

如果需要在a的第一个维度上比较所有子传感器,请使用in

>>> [i in b for i in a]
[False, True, False]

这应该行得通

result = []
for i in a:
    try: # to avoid error for the case of empty tensors
        result.append(max(i.numpy()[1] == b.T.numpy()[1,i.numpy()[0] == b.T.numpy()[0,:]]))
    except:
        result.append(False)
result

我认为不使用至少某种类型的迭代是不可能的。我能管理的最简洁的方法是使用列表理解:

[True if i in b else False for i in a]

检查b中a中的元素并给出[False,True,False]。也可以反转以获得b中的元素a[假,真]

相关问题 更多 >