On Thu, Nov 20, 2014 at 5:47 PM, Marek Wojciechowski <mw...@p.lodz.pl> wrote: > Hi! > > I wrote a simple subclass of np.ndarray and now i do call np.sum() on it. I > expected that the result will be a python float (or int) just like when > summing > up regular arrays. Instead i obtain the (scalar) view of my subclass. How can > i change this behavior? I tried writing __array_wrap__ method like this: > > def __array_wrap__(self, out_arr, context=None): > selfv = self.view(np.ndarray) > return np.ndarray.__array_wrap__(selfv, out_arr, context) > > but this just returns np.ndarray type and not float.
There isn't really any reason to call __array_wrap__ here. Just compute whatever value you want and return it. If you want a float then return that :-). (Something like if selfv.ndim == 0: return selfv[()] ) As a bit of advice, if you can possibly avoid subclassing ndarray, then you probably should. There are a lot of painful little quirks that you'll run into. -n -- Nathaniel J. Smith Postdoctoral researcher - Informatics - University of Edinburgh http://vorpus.org _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion