I’m trying to rewrite the answer to this stack thread 22 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!