I have an 4 dimensional array (named colors) which assigns a color (ie 3 values R, G, B) to each 3d point (x, y, z) -> (r, g, b) 
I have another 2 dimensional array (named visible) which tells me which z pane I can see when I look down on it (x, y)->z
I want to create 3 dimensional array (view) which tells me what I see. (x, y) -> (r, g, b)

How can I do that with numpy smart indexing?

I tried 

```
colors=np.array([
  [
  [[0, 0, 0], [1, 0, 0]],
  [[0, 1, 0], [0, 0, 1]]],

  [
  [[1, 0, 1], [1, 1, 0]],
  [[0, 1, 1], [1, 1, 1]]]])

visible=np.array(
  [[0, 1],
   [1, 0]])

view=colors[:, :,visible[:, :]]

expected=np.array(
[[[0, 0, 0], [1, 1, 0]],
 [[0, 1, 1], [0, 0, 1]]])

```

But that gives me 5 dimensional array.