<br><br><div class="gmail_quote">On Wed, Apr 15, 2009 at 1:52 PM, Pauli Virtanen <span dir="ltr">&lt;<a href="mailto:pav@iki.fi">pav@iki.fi</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;">
<br>
Mixing views and mutating (eg. in-place) operations can cause surprising<br>
and ill-defined results. Consider<br>
<a href="http://projects.scipy.org/numpy/ticket/1085" target="_blank">http://projects.scipy.org/numpy/ticket/1085</a>:<br>
<br>
&gt;&gt;&gt; import numpy as np<br>
&gt;&gt;&gt; x = np.array([[1,2], [3,4]])<br>
&gt;&gt;&gt; x<br>
array([[1, 2],<br>
       [3, 4]])<br>
&gt;&gt;&gt; x += x.T<br>
&gt;&gt;&gt; x<br>
array([[2, 5],<br>
       [8, 8]])<br>
&gt;&gt;&gt; y = np.array([[1,2], [3,4]], order=&#39;F&#39;)<br>
&gt;&gt;&gt; y<br>
array([[1, 2],<br>
       [3, 4]])<br>
&gt;&gt;&gt; y += y.T<br>
&gt;&gt;&gt; y<br>
array([[2, 7],<br>
       [5, 8]])<br>
<br>
The result depends on the order in which the elements happen to lie in<br>
the memory. Predicting the outcome is nearly impossible. (Also, I think<br>
Numpy tries to optimize the order of the loops, making it even more<br>
difficult?)<br>
<br>
This is a sort of a pitfall. Should Numpy issue a warning every time a<br>
mutating operation is performed on an array, with input data that is a<br>
view on the same array?<br>
</blockquote><div><br>My first thought is yes, just because the result is hard to predict.<br> <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Some alternatives:<br>
<br>
  a) Raise warning for all arrays, even 1-D.<br>
</blockquote><div><br>Yes again. Are there examples where one would not want a warning? Examples that couldn&#39;t be implemented otherwise?<br><br>Chuck<br><br></div></div><br>