Let’s say I have a tensor x, size of [B, N, C] and tensor idx, size of [B,N,D]. ( C>D) . Tensor B has indices that I need for cropping. For example :

```
x shape: torch.Size([2, 3, 3])
tensor([[[0.0734, 0.9977, 0.8373],
[0.3425, 0.1120, 0.7120],
[0.0164, 0.8370, 0.9897]],
[[0.5219, 0.7202, 0.0872],
[0.9454, 0.1704, 0.9376],
[0.8468, 0.5296, 0.0180]]])
idx shape torch.Size([2, 3, 2])
tensor([[[1, 2],
[2, 1],
[1, 2]],
[[1, 2],
[1, 0],
[0, 2]]], dtype=torch.int32)
what I want:
tensor([[[ 0.9977, 0.8373],
[0.7120, 0.1120],
[0.8370, 0.9897]],
[[0.7202, 0.0872],
[0.1704, 0.9454],
[0.8468 0.0180]]])
```

How can I do this in an efficient way?