# Slicing a Tensor around a location given by another tensor

I want to slice a Tensor around a spatial location which is coming from another tensor. Is there any efficient way of achieving this? Below is an example of what I want. In this case I sliced a 3x3 tensor from the input tensor using the location from the location tensor.

``````input_tensor :
tensor([[[12, 30, 21, 32,  3, 38],
[ 8, 36, 20, 35, 16, 36],
[12, 31, 23, 30, 20, 20],
[33,  2, 10, 22, 31,  5],
[30, 13,  5,  2, 21,  7],
[34, 39, 32,  8,  6, 26]],

[[32,  5, 10, 19, 14, 29],
[ 3,  5, 27, 15,  2,  6],
[32,  6, 39, 15, 18, 37],
[19, 33, 19,  4, 29,  7],
[ 0, 32,  8, 28,  1,  5],
[24, 15, 39,  6, 39, 24]]])
location_tensor:
tensor([[4, 3],
[3, 1]])

Expected output,
tensor([[[10, 22, 31],
[ 5,  2, 21],
[32,  8,  6]],

[[32,  6, 39],
[19, 33, 19],
[ 0, 32,  8]]])
``````

#####################
Code I used,

``````import torch
import torch.nn as nn
t1 = torch.randint(0, 40, (2, 6,6))
ix = torch.randint(1, 5, (2, 2))
print (t1)
print (ix)
t1_l = list(torch.unbind(t1))
ix_l = list(torch.unbind(ix))
t = torch.stack([t[0][t[1][0]-1:t[1][0]+2, t[1][1]-1:t[1][1]+2] for t in zip(t1_l, ix_l)])
print (t)
``````