<div class="gmail_quote">On Sun, Feb 22, 2009 at 6:28 PM, Pierre GM <span dir="ltr">&lt;<a href="mailto:pgmdevlist@gmail.com">pgmdevlist@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
On Feb 22, 2009, at 6:21 PM, Eric Firing wrote:<br>
<br>
&gt; Darren Dale wrote:<br>
&gt;&gt; Does anyone know why __array_wrap__ is not called for subclasses<br>
&gt;&gt; during<br>
&gt;&gt; arithmetic operations where an iterable like a list or tuple<br>
&gt;&gt; appears to<br>
&gt;&gt; the right of the subclass? When I do &quot;mine*[1,2,3]&quot;, array_wrap is<br>
&gt;&gt; not<br>
&gt;&gt; called and I get an ndarray instead of a MyArray. &quot;[1,2,3]*mine&quot; is<br>
&gt;&gt; fine, as is &quot;mine*array([1,2,3])&quot;. I see the same issue with<br>
&gt;&gt; division,<br>
&gt;<br>
&gt; The masked array subclass does not show this behavior:<br>
<br>
</div>Because MaskedArray.__mul__ and others are redefined.<br>
<br>
Darren, you can fix your problem by redefining MyArray.__mul__ as:<br>
<br>
 &nbsp; &nbsp; def __mul__(self, other):<br>
 &nbsp; &nbsp; &nbsp; &nbsp; return np.ndarray.__mul__(self, np.asanyarray(other))<br>
<br>
forcing the second term to be a ndarray (or a subclass of). You can do<br>
the same thing for the other functions (__add__, __radd__, ...)</blockquote><div><br>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&#39;ve been putting a lot of work in lately to get quantities to work with numpy&#39;s stock ufuncs.<br>
<br>Darren<br></div></div>