title: numpy submatrix 3D using a single indexing item
body: <p>I have a 3D numpy array:</p>
  
  <pre><code>K = (np.arange(36)).reshape((4,3,3))+1
  [[[ 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 30]
  [31 32 33]
  [34 35 36]]]
  </code></pre>
  
  <p>where each item in K is a matrix.
  Now, I want to get all 2D submatrix using a certain index vector</p>
  
  <p>I know that it is possible in this way:</p>
  
  <pre><code>idx = np.s_[:,:2,:2]
  K_sub = K[idx]
  [[[ 1  2]
  [ 4  5]]
  
  [[10 11]
  [13 14]]
  
  [[19 20]
  [22 23]]
  
  [[28 29]
  [31 32]]]
  </code></pre>
  
  <p>The problem is that I want to use an arbitrary indexing array and not slicing to select rows and cols.</p>
  
  <p>Moreover, I want to use a single object to get the list of submatrices, something like:</p>
  
  <pre><code>K_sub = [magic_indexing]
  </code></pre>
  
  <p>and not:</p>
  
  <pre><code>K_sub = np.array([k_[train][:,train] for k_ in K])
  </code></pre>
  
  <p>Exists a simple way to do it?</p>