title: Numpy apply_along_axis not returning ndarray subclass
body: <p>I have an <code>ndarray</code> subclass, with <code>__array_wrap__</code> properly implemented, <code>np.apply_along_axis</code> isn't returning instances of my subclass, but rather <code>ndarrays</code>. The code below replicates my problem:</p>
  
  <pre><code>import numpy as np
  
  class MySubClass(np.ndarray):
  
      def __new__(cls, input_array, info=None):
          obj = np.asarray(input_array).view(cls)
          obj.info = info
          return obj
  
      def __array_finalize__(self, obj):
          if obj is None: return
          self.info = getattr(obj, 'info', None)
  
      def __array_wrap__(self, out_arr, context=None):
          return np.ndarray.__array_wrap__(self, out_arr, context)
  
  sample_ndarray = np.array([[0,5],[2.1,0]]) 
  sample_subclass = MySubClass(sample_ndarray, info="Hi Stack Overflow")
  
  # Find the smallest positive (&gt;0) number along the first axis
  min_positive = np.apply_along_axis(lambda x: np.min(np.extract(x&gt;0,x)),
                                     0, sample_subclass)
  
  # No more info
  print hasattr(min_positive, 'info')
  # Not a subclass
  print isinstance(min_positive, MySubClass)
  # Is an ndarray
  print isinstance(min_positive, np.ndarray)
  </code></pre>
  
  <p>The most relevant question I could find was <a href="https://stackoverflow.com/questions/6190859/some-numpy-functions-return-ndarray-instead-of-my-subclass">this one</a> but the consensus there appears to be that <code>__array_wrap__</code> needs to be implemented, which I've done. Also, <code>np.extract</code> and <code>np.min</code> both return subclasses as expected, it's just when using <code>apply_along_axis</code> that I see this behavior. </p>
  
  <p>Is there any way to get my code to return my subclass? 
  I am using numpy version 1.11.0 </p>