<br><br><div class="gmail_quote">On Mon, May 28, 2012 at 9:18 PM,  <span dir="ltr"><<a href="mailto:josef.pktd@gmail.com" target="_blank">josef.pktd@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<a href="https://github.com/numpy/numpy/commit/74b9f5eef8fac643bf9012dbb2ac6b4b19f46892" target="_blank">https://github.com/numpy/numpy/commit/74b9f5eef8fac643bf9012dbb2ac6b4b19f46892</a><br>
broke return_inverse for structured arrays, because of the use of mergesort<br>
<br>
I'm using structured dtypes to get uniques and return_inverse by rows<br>
<br>
>>> groups = np.random.randint(0,4,size=(10,2))<br>
>>> groups_ = groups.view([('',groups.dtype)]*groups.shape[1]).flatten()<br>
>>> groups<br>
array([[0, 2],<br>
       [1, 2],<br>
       [1, 1],<br>
       [3, 1],<br>
       [3, 1],<br>
       [2, 1],<br>
       [1, 0],<br>
       [3, 3],<br>
       [3, 2],<br>
       [0, 0]])<br>
>>> groups_<br>
array([(0, 2), (1, 2), (1, 1), (3, 1), (3, 1), (2, 1), (1, 0), (3, 3),<br>
       (3, 2), (0, 0)],<br>
      dtype=[('f0', '<i4'), ('f1', '<i4')])<br>
<br>
>>> np.argsort(groups_)<br>
array([9, 0, 6, 2, 1, 5, 4, 3, 8, 7])<br>
<br>
>>> np.argsort(groups_, kind='mergesort')<br>
Traceback (most recent call last):<br>
  File "<stdin>", line 1, in <module><br>
  File "C:\Python26\lib\site-packages\numpy\core\fromnumeric.py", line<br>
679, in argsort<br>
    return argsort(axis, kind, order)<br>
TypeError: requested sort not available for type<br>
<br>
>>> uni, uni_idx, uni_inv = np.unique(groups_, return_index=True, return_inverse=True)<br>
>>> uni_inv<br>
array([1, 4, 3, 6, 6, 5, 2, 8, 7, 0])<br>
<br>
exception in numpy 1.6.2rc2 (as reported by Debian for statsmodels)<br>
<br></blockquote><div><br>I've been putting of, um, planning to implement the different sort kinds for object/structured arrays for a while, sounds like it needs to get done.<br><br>Chuck  <br></div><br></div>