<br><br><div class="gmail_quote">On Tue, Nov 6, 2012 at 7:52 PM, Warren Weckesser <span dir="ltr"><<a href="mailto:warren.weckesser@gmail.com" target="_blank">warren.weckesser@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><div class="gmail_quote"><div><div class="h5">On Tue, Nov 6, 2012 at 8:27 PM, Phillip Feldman <span dir="ltr"><<a href="mailto:phillip.m.feldman@gmail.com" target="_blank">phillip.m.feldman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
numpy.unique behaves as I would expect for small inputs like the following:<br><br>In [12]: x= [0, 0, 1, 0, 1, 2, 0, 1, 2, 3]<br><br>In [13]: unique(x, return_index=True)<br>Out[13]: (array([0, 1, 2, 3]), array([0, 2, 5, 9], dtype=int64))<br>


<br>But, when I give it something larger, the return index values do not always correspond to the first occurrences in the input.  The documentation is silent on the question of how the return index values are chosen when a given element of x appears more than once.  Either the documentation should be<br>


clarified, or better yet, the behavior should be changed.<br></blockquote></div></div><div><br><br>In fact, it was changed (in the master branch on github) several months ago, but there has not yet been a release with the changes.  The sort method that np.unique passes to np.argsort is now 'mergesort', and the docstring states that the indices returned are for the first occurrences of the unique elements.  The new docstring is here: <a href="http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.unique.html#numpy.unique" target="_blank">http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.unique.html#numpy.unique</a><br>

<br>See <a href="https://github.com/numpy/numpy/commit/dbf235169ed3386b359caaa9217f5280bf1d6749" target="_blank">https://github.com/numpy/numpy/commit/dbf235169ed3386b359caaa9217f5280bf1d6749</a> for the commit, and <a href="https://github.com/numpy/numpy/blob/master/numpy/lib/arraysetops.py" target="_blank">https://github.com/numpy/numpy/blob/master/numpy/lib/arraysetops.py</a> for the latest version of the source.<br>

<br></div></div></blockquote><div><br>That change was backported to 1.6.2, but doesn't work for record/object arrays. That oversight is fixed in master.<br><br>Chuck <br></div><br></div>