What is the exact reason for treating tensors and (numpy) arrays differently for *indexing* of tensors? For example:

```
indices = torch.tensor([[0, 1], [0, 2]])
t = torch.arange(1,28).reshape(3,3,3)
# tensor([[[ 1, 2, 3],
# [ 4, 5, 6],
# [ 7, 8, 9]],
# [[10, 11, 12],
# [13, 14, 15],
# [16, 17, 18]],
# [[19, 20, 21],
# [22, 23, 24],
# [25, 26, 27]]])
>>> a[indices.numpy()]
tensor([[ 1, 2, 3],
[16, 17, 18]])
>>> a[indices]
tensor([[[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]]],
[[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]]])
```

I understand how it works, but is there a particular reason for this? Isn’t having this differentiation a little bit confusing and potentially can lead to errors?