I'm trying to index the last dimension of a 3D matrix with a matrix consisting of indices that I wish to keep. 

I have a matrix of thrust values with shape:

`(3, 3, 5)`

I would like to filter the last index according to some criteria so that it is reduced from size 5 to size 1. I have already found the indices in the last dimension that fit my criteria:

```
[[0 0 1]
 [0 0 1]
 [1 4 4]]

```

What I want to achieve: for the first row and first column I want the 0th index of the last dimension. For the first row and third column I want the 1st index of the last dimension. In terms of indices to keep the final matrix will become a `(3, 3)` 2D matrix like this:

```
[[0,0,0], [0,1,0], [0,2,1];
 [1,0,0], [1,1,0], [1,2,1];
 [2,0,1], [2,1,4], [2,2,4]]

```

I'm pretty confident numpy can achieve this, but I'm unable to figure out exactly how. I'd rather not build a construction with nested for loops.

I have already tried:

```
minValidPower = totalPower[:, :, tuple(indexMatrix)]

```

But this results in a `(3, 3, 3, 3)` matrix, so I am not entirely sure how I'm supposed to approach this.