I’m trying to rewrite the answer to this stack thread in native PyTorch language (as I don’t want to be flicking back and forth between numpy and PyTorch objects.

However I’m struggling to make it work in tensor form, so I was wondering if anyone could give me a hand in seeing where I’m going wrong?

The new form of the question in the thread goes as follows: Say you have the arrays as described in the thread as tensors…

```
z = torch.tensor([[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]])
i = torch.tensor([[2, 1, 2, 1],
[1, 1, 2, 1],
[1, 1, 1, 1],
[1, 0, 0, 1]])
v = torch.tensor([[5., 5., 0., 4.],
[4., 6., 8., 3.],
[4., 0., 4., 8.],
[7., 6., 5., 7.]])
```

And you wish to perform the answer operation:

```
z = np.array([*map(i.__eq__,np.unique(i))])*np.array([v]*z.shape[0])
```

…but in a PyTorch way, how does one alter this?

I have tried:

```
z = torch.tensor([*map(it.__eq__,torch.unique(it))])*torch.stack([vt]*zt.shape[0])
```

…but I still get an error relating to the use of a list inside `torch.tensor()`

procedure I believe. You can see I’ve altered the second multiplication term to use `torch.stack()`

instead of a list multiplication but I can’t see how to fix the list error.

Error:

ValueError: only one element tensors can be converted to Python scalars

Any help on this matter would be greatly appreciated, thanks in advance!