Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在两个不同大小的PyTorch张量中得到相等元素的索引?_Python_Pytorch - Fatal编程技术网

Python 如何在两个不同大小的PyTorch张量中得到相等元素的索引?

Python 如何在两个不同大小的PyTorch张量中得到相等元素的索引?,python,pytorch,Python,Pytorch,假设我有两个PyTorch张量: t_1d = torch.Tensor([6, 5, 1, 7, 8, 4, 7, 1, 0, 4, 11, 7, 4, 7, 4, 1]) t = torch.Tensor([4, 7]) 我想得到集合之间精确匹配交集的指数 带张量t的张量t_1d t\u 1d和t的期望输出:[5,12](精确交点的第一个索引) 最好在GPU上使用大张量,这样就不会出现循环或Numpy强制转换。一般来说,我们可以检查t中的每个元素在哪里等于t\u 1d中的元素 在此之后,将

假设我有两个PyTorch张量:

t_1d = torch.Tensor([6, 5, 1, 7, 8, 4, 7, 1, 0, 4, 11, 7, 4, 7, 4, 1])
t = torch.Tensor([4, 7])
我想得到集合之间精确匹配交集的指数 带张量t的张量t_1d

t\u 1d
t
的期望输出:
[5,12]
(精确交点的第一个索引)


最好在GPU上使用大张量,这样就不会出现循环或Numpy强制转换。

一般来说,我们可以检查
t
中的每个元素在哪里等于
t\u 1d
中的元素

在此之后,将最后一个元素向后移动与第一个元素相同的位置(一般情况下,此处按
-1
)并检查数组是否相等:

intersection = (t_1d == t[0]) & torch.roll(t_1d == t[1], shifts=-1)
torch.where(intersection)[0] # torch.tensor([5, 12])