I have a 1-D boolean tensor, let’s say, a = [True, False, False, False, True, False, True, False, False, False]. What I want to do is, for given N, I want to find bitwise_or of the tensors a, a[1:] + [False], a[2:] + [False, False], ..., a[N-1:] + [False, ..., False] (with abuse of notations). For example, when N=1, then the answer would be bitwise_or of two tensors
[True, False, False, False, True, False, True, False, False, False]
[False, False, False, True, False, True, False, False, False, False],
so is
[True, False, False, True, True, True, True, False, False, False].
I can do this with using a for loop over N, by
for i in range(1, N):
    a = a | torch.cat(a[i:], torch.BoolTensor([False] * i))

but I wonder if there’s more efficient way to do this. Also, I want if there’s a way to do the same thing for numpy array.