title: numpy `take` along 2 axes
body: <p>I have a 3D array <code>a</code> of data and a 2D array <code>b</code> of indices. I need to take a sub-array of <code>a</code> along the 3rd axis, using the indices from <code>b</code>. I can do it with <code>take</code> like this:</p>
  
  <pre><code>a = np.arange(24).reshape((2,3,4))
  b = np.array([0,2,1,3]).reshape((2,2))
  np.array([np.take(a_,b_,axis=1) for (a_,b_) in zip(a,b)])
  </code></pre>
  
  <p>Can I do it without list comprehension, using some fancy indexing? I am worried about efficiency, so if fancy indexing is not more efficient in this case, I would like to know it. </p>
  
  <p><strong>EDIT</strong> The 1st thing I've tried is <code>a[[0,1],:,b]</code> but it doesn't give the sub-array I need</p>