On Feb 3, 2009, at 4:00 PM, Ryan May wrote: > > Well, I guess I hit send too soon. Here's one easy solution > (consistent with > what you did for __radd__), change the code for __rmul__ to do: > > return multiply(self, other) > > instead of: > > return multiply(other, self) > > That fixes it for me, and I don't see how it would break anything.
Good call, but once again: "Thou shalt not put trust in ye masked values [1]". >>> a = np.ma.array([1,2,3],mask=[0,1,0]) >>> b = np.ma.array([10, 20, 30], mask=[0,1,0]) >>> (a*b).data array([10, 2, 90]) >>> (b*a).data array([10, 20, 90]) So yes, __mul__ is not commutative when you deal w/ masked arrays (at least, when you try to access the data under a mask). Nothing I can do. Remember that preventing the underlying data to be modified is NEVER guaranteed... [1] Epistle of Paul (Dubois). _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion