suppose I have a tensor: x: [0, 1, 4, 5, 6]
and I want to index elements in any of this list: [4, 5, 6],
similar to: np.where(x in [4, 5, 6], True, False) (this also doesn’t work ),
Expected outcome: [False, False, True, True, True]
Are there any solutions? Thanks.
Could you explain the use case a bit more or give an example output for the provided tensors?
Would you like to select a random value from
[4, 5, 6]?
Hi, I think I didn’t explain the example enough.
So the input x can be: [1, 2, 3, 4, 5, 6]
I want to locate the index of elements i in x where i also belongs to y:[4, 5, 6]
The expected outcome is: [False, False, False, True, True, True].
I managed to achieve this by numpy:
index = np.isin(x.numpy(), [4, 5, 6])
I am wondering if pytorch has similar functions. Thank you.
PyTorch doesn’t have the same
isin implementation, but you might take a look at the numpy implementation and maybe use their method?
Alternatively, you could of course use a list comprehension as:
x = torch.arange(7) y = torch.tensor([4, 5, 6]) ret = torch.stack([y_ == x for y_ in y]).sum(0).bool()
Yes, .sum(0) is a smart trick. Thank you