There might be a cleaner way to do it, but a first attempt:
>>> y = torch.tensor([[2], [7], [1], [2]])
>>> y_idx = torch.zeros(y.shape[0], 10).float()
>>> y_idx.index_put_((torch.arange(4), y.squeeze()), torch.ones(4))
tensor([[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],
        [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
        [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]])