On Sun, Feb 22, 2009 at 6:28 PM, Pierre GM <pgmdevl...@gmail.com> wrote:
> > On Feb 22, 2009, at 6:21 PM, Eric Firing wrote: > > > Darren Dale wrote: > >> Does anyone know why __array_wrap__ is not called for subclasses > >> during > >> arithmetic operations where an iterable like a list or tuple > >> appears to > >> the right of the subclass? When I do "mine*[1,2,3]", array_wrap is > >> not > >> called and I get an ndarray instead of a MyArray. "[1,2,3]*mine" is > >> fine, as is "mine*array([1,2,3])". I see the same issue with > >> division, > > > > The masked array subclass does not show this behavior: > > Because MaskedArray.__mul__ and others are redefined. > > Darren, you can fix your problem by redefining MyArray.__mul__ as: > > def __mul__(self, other): > return np.ndarray.__mul__(self, np.asanyarray(other)) > > forcing the second term to be a ndarray (or a subclass of). You can do > the same thing for the other functions (__add__, __radd__, ...) Thanks for the suggestion. I know this can be done, but ufuncs like np.multiply(mine,[1,2,3]) will still not work. Plus, if I reimplement these methods, I take some small performance hit. I've been putting a lot of work in lately to get quantities to work with numpy's stock ufuncs. Darren
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion