<br><br><div class="gmail_quote">On Sat, Oct 29, 2011 at 11:36 PM, Matthew Brett <span dir="ltr">&lt;<a href="mailto:matthew.brett@gmail.com">matthew.brett@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>
<div><div></div><div class="h5"><br>
On Sat, Oct 29, 2011 at 1:48 PM, Matthew Brett &lt;<a href="mailto:matthew.brett@gmail.com">matthew.brett@gmail.com</a>&gt; wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; On Sat, Oct 29, 2011 at 1:44 PM, Ralf Gommers<br>
&gt; &lt;<a href="mailto:ralf.gommers@googlemail.com">ralf.gommers@googlemail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Sat, Oct 29, 2011 at 9:04 PM, Matthew Brett &lt;<a href="mailto:matthew.brett@gmail.com">matthew.brett@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Sat, Oct 29, 2011 at 3:26 AM, Ralf Gommers<br>
&gt;&gt;&gt; &lt;<a href="mailto:ralf.gommers@googlemail.com">ralf.gommers@googlemail.com</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; On Sat, Oct 29, 2011 at 1:37 AM, Matthew Brett &lt;<a href="mailto:matthew.brett@gmail.com">matthew.brett@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; On Fri, Oct 28, 2011 at 4:21 PM, Ralf Gommers<br>
&gt;&gt;&gt; &gt;&gt; &lt;<a href="mailto:ralf.gommers@googlemail.com">ralf.gommers@googlemail.com</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; On Sat, Oct 29, 2011 at 12:37 AM, Matthew Brett<br>
&gt;&gt;&gt; &gt;&gt; &gt; &lt;<a href="mailto:matthew.brett@gmail.com">matthew.brett@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; On Fri, Oct 28, 2011 at 3:14 PM, Charles R Harris<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; &lt;<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; No, that&#39;s not what Nathaniel and I are saying at all. Nathaniel was<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; pointing to links for projects that care that everyone agrees before<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; they go ahead.<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; It looked to me like there was a serious intent to come to an<br>
&gt;&gt;&gt; &gt;&gt; &gt; agreement,<br>
&gt;&gt;&gt; &gt;&gt; &gt; or<br>
&gt;&gt;&gt; &gt;&gt; &gt; at least closer together. The discussion in the summer was going<br>
&gt;&gt;&gt; &gt;&gt; &gt; around<br>
&gt;&gt;&gt; &gt;&gt; &gt; in<br>
&gt;&gt;&gt; &gt;&gt; &gt; circles though, and was too abstract and complex to follow. Therefore<br>
&gt;&gt;&gt; &gt;&gt; &gt; Mark&#39;s<br>
&gt;&gt;&gt; &gt;&gt; &gt; choice of implementing something and then asking for feedback made<br>
&gt;&gt;&gt; &gt;&gt; &gt; sense<br>
&gt;&gt;&gt; &gt;&gt; &gt; to<br>
&gt;&gt;&gt; &gt;&gt; &gt; me.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; I should point out that the implementation hasn&#39;t - as far as I can<br>
&gt;&gt;&gt; &gt;&gt; see - changed the discussion.  The discussion was about the API.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Implementations are useful for agreed APIs because they can point out<br>
&gt;&gt;&gt; &gt;&gt; where the API does not make sense or cannot be implemented.  In this<br>
&gt;&gt;&gt; &gt;&gt; case, the API Mark said he was going to implement - he did implement -<br>
&gt;&gt;&gt; &gt;&gt; at least as far as I can see.  Again, I&#39;m happy to be corrected.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Implementations can also help the discussion along, by allowing people<br>
&gt;&gt;&gt; &gt; to<br>
&gt;&gt;&gt; &gt; try out some of the proposed changes. It also allows to construct<br>
&gt;&gt;&gt; &gt; examples<br>
&gt;&gt;&gt; &gt; that show weaknesses, possibly to be solved by an alternative API. Maybe<br>
&gt;&gt;&gt; &gt; you<br>
&gt;&gt;&gt; &gt; can hold the complete history of this topic in your head and comprehend<br>
&gt;&gt;&gt; &gt; it,<br>
&gt;&gt;&gt; &gt; but for me it would be very helpful if someone said:<br>
&gt;&gt;&gt; &gt; - here&#39;s my dataset<br>
&gt;&gt;&gt; &gt; - this is what I want to do with it<br>
&gt;&gt;&gt; &gt; - this is the best I can do with the current implementation<br>
&gt;&gt;&gt; &gt; - here&#39;s how API X would allow me to solve this better or simpler<br>
&gt;&gt;&gt; &gt; This can be done much better with actual data and an actual<br>
&gt;&gt;&gt; &gt; implementation<br>
&gt;&gt;&gt; &gt; than with a design proposal. You seem to disagree with this statement.<br>
&gt;&gt;&gt; &gt; That&#39;s fine. I would hope though that you recognize that concrete<br>
&gt;&gt;&gt; &gt; examples<br>
&gt;&gt;&gt; &gt; help people like me, and construct one or two to help us out.<br>
&gt;&gt;&gt; That&#39;s what use-cases are for in designing APIs.  There are examples<br>
&gt;&gt;&gt; of use in the NEP:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="https://github.com/numpy/numpy/blob/master/doc/neps/missing-data.rst" target="_blank">https://github.com/numpy/numpy/blob/master/doc/neps/missing-data.rst</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; the alterNEP:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="https://gist.github.com/1056379" target="_blank">https://gist.github.com/1056379</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; and my longer email to Travis:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="http://article.gmane.org/gmane.comp.python.numeric.general/46544/match=ignored" target="_blank">http://article.gmane.org/gmane.comp.python.numeric.general/46544/match=ignored</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Mark has done a nice job of documentation:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="http://docs.scipy.org/doc/numpy/reference/arrays.maskna.html" target="_blank">http://docs.scipy.org/doc/numpy/reference/arrays.maskna.html</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If you want to understand what the alterNEP case is, I&#39;d suggest the<br>
&gt;&gt;&gt; email, just because it&#39;s the most recent and I think the terminology<br>
&gt;&gt;&gt; is slightly clearer.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Doing the same examples on a larger array won&#39;t make the point easier<br>
&gt;&gt;&gt; to understand.  The discussion is about what the right concepts are,<br>
&gt;&gt;&gt; and you can help by looking at the snippets of code in those<br>
&gt;&gt;&gt; documents, and deciding for yourself whether you think the current<br>
&gt;&gt;&gt; masking / NA implementation seems natural and easy to explain, or<br>
&gt;&gt;&gt; rather forced and difficult to explain, and then email back trying to<br>
&gt;&gt;&gt; explain your impression (which is not always easy).<br>
&gt;&gt;<br>
&gt;&gt; If you seriously believe that looking at a few snippets is as helpful and<br>
&gt;&gt; instructive as being able to play around with them in IPython and modify<br>
&gt;&gt; them, then I guess we won&#39;t make progress in this part of the discussion.<br>
&gt;&gt; You&#39;re just telling me to go back and re-read things I&#39;d already read.<br>
&gt;<br>
&gt; The snippets are in ipython or doctest format - aren&#39;t they?<br>
<br>
</div></div>Oops - 10 minute rule.  Now I see that you mean that you can&#39;t<br>
experiment with the alternative implementation without working code.<br></blockquote><div><br>Indeed. <br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

That&#39;s true, but I am hoping that the difference between - say:<br>
<br>
a[0:2] = np.NA<br>
<br>
and<br>
<div class="im"><br>
a.mask[0:2] = False<br>
<br>
</div>would be easy enough to imagine.  </blockquote><div><br>It is in this case. I agree the explicit ``a.mask`` is clearer. This is a quite specific point that could be improved in the current implementation. It doesn&#39;t require ripping everything out. <br>
<br>Ralf<br></div></div>