title: Taking different columns from each 2D slice of a 3D numpy array
body: <p>Assume the following 3D numpy array:</p>
  
  <pre><code>array([[[4, 1, 3, 5, 0, 1, 5, 4, 3],
          [2, 3, 3, 2, 1, 0, 5, 5, 4],
          [5, 3, 0, 2, 2, 2, 5, 3, 2],
          [0, 3, 1, 0, 2, 4, 1, 1, 5],
          [2, 0, 0, 1, 4, 0, 3, 5, 3]],
  
         [[2, 2, 4, 1, 3, 4, 1, 1, 5],
          [2, 2, 3, 5, 5, 4, 0, 2, 0],
          [4, 0, 5, 3, 1, 3, 1, 1, 1],
          [4, 5, 0, 0, 5, 3, 3, 2, 4],
          [0, 3, 4, 5, 4, 5, 4, 2, 3]],
  
         [[1, 3, 2, 2, 0, 4, 5, 0, 2],
          [5, 0, 5, 2, 3, 5, 5, 3, 1],
          [0, 5, 3, 2, 2, 0, 4, 2, 3],
          [4, 4, 0, 3, 2, 1, 5, 3, 0],
          [0, 0, 2, 4, 0, 5, 2, 0, 0]]])
  </code></pre>
  
  <p>Given a list <code>[3, 4, 8]</code>, </p>
  
  <p><strong>is it possible to slice the given tensor <em>without</em> using a for loop?</strong></p>
  
  <p>For example to take the 3rdth column from <code>[0, :, :]</code>, 4th column from <code>[1, :, :]</code> and 8th column from <code>[2, :, :]</code> to obtain:</p>
  
  <pre><code>array([[5, 2, 2, 0, 1],
         [3, 5, 1, 5, 4],
         [2, 1, 3, 0, 0]])
  </code></pre>