Dnia czwartek, 20 listopada 2014 18:47:41 Marek Wojciechowski pisze: > 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.
Hi! I'm back with the problem of returning types form ndarray subclasses, now with ravelling the array. I wrote the __array_wrap__ function like this: def __array_wrap__(self, out_arr, context=None): arr = out_arr.view(np.ndarray) if arr.ndim == 0: arr = arr[()] return arr I was convinced that now ufuncs wil return always numpy arrays. But now i discovered that for example: a.ravel() returns still the subclass type, not ndarray type. Ravel method apparently does not call __array_wrap__ (whereas np.ravel(a) does!). Is there a systematic way to resolve this or i need to write new ravel method? Regards, -- Marek Wojciechowski _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion