J_Johnson
(J Johnson)
#1
Suppose we have some random distribution of integer values between 1 and 3.

```
A=torch.round(torch.rand(10000)*2)+1
```

And we want two masks combined in the following order:

```
cond1=A!=2.0
B=A[cond1]
cond2=B[:-1]!=B[1:]
all_but_firstB=B[1:]
C=torch.cat([B[0].view(-1), all_but_firstB[cond2]])
```

How would I go about combining the two masks as one to apply to the original vector A? Such that:

```
A[one_mask]=C
```

J_Johnson
(J Johnson)
#2
I was able to tackle this with using a vector range, applying the masks to that range, then applying that range as a mask to A. As follows:

```
data_size=10000
A=torch.round(torch.rand(data_size)*2)+1
b=torch.arange(data_size)
cond1=A!=2.0
b = b[cond1]
cond2 = A[cond1][:-1]!=A[cond1][1:]
all_but_firstb=b[1:]
b=torch.cat([b[0].view(-1), all_but_firstb[cond2]])
print(torch.all(A[b]==C))
```