This example is based on this post: TensorFlow - numpy-like tensor indexing.

In Numpy you can use arrays to index into an array. E.g. in order to select the elements at `(1, 2)`

and `(3, 2)`

in a 2-dimensional array, you can do this:

```
# data is [[0, 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, 28, 29]]
data = np.reshape(np.arange(30), [5, 6])
a = [1, 3]
b = [2, 2]
selected = data[a, b]
print(selected)
```

This will print:

```
[ 8 20]
```

To get the same behaviour in Tensorflow, you can use `tf.gather_nd`

, which is an extension of `tf.gather`

. The above example can be written like this:

```
x = tf.constant(data)
idx1 = tf.constant(a)
idx2 = tf.constant(b)
result = tf.gather_nd(x, tf.stack((idx1, idx2), -1))
with tf.Session() as sess:
print(sess.run(result))
```

This will print:

```
[ 8 20]
```

`tf.stack`

is the equivalent of `np.asarray`

and in this case stacks the two index vectors along the last dimension (which in this case is the 1st) to produce:

```
[[1 2]
[3 2]]
```