[Numpy-discussion] return type from ufuncs
Marek Wojciechowski
mwojc at p.lodz.pl
Thu Nov 27 04:00:01 EST 2014
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
More information about the NumPy-Discussion
mailing list