[NumPy-Tickets] [NumPy] #2063: unique() does not seem to return correct index if array larger than 16
NumPy Trac
numpy-tickets@scipy....
Mon Mar 19 09:57:46 CDT 2012
#2063: unique() does not seem to return correct index if array larger than 16
------------------------+---------------------------------------------------
Reporter: lolowizard | Owner: somebody
Type: defect | Status: new
Priority: highest | Milestone: 1.7.0
Component: numpy.core | Version: 1.6.1
Keywords: unique |
------------------------+---------------------------------------------------
Comment(by bryan):
Explicitly specifying mergesort seems to solve the problem:
{{{
In [6]: np.unique(w,return_index=True)
Out[6]: (array([0, 1, 2]), array([ 0, 5, 11]))
In [7]: np.unique(v,return_index=True)
Out[7]: (array([0, 1, 2]), array([ 0, 5, 11]))
}}}
{{{
index c4441d8..3ecc2d4 100644
--- a/numpy/lib/arraysetops.py
+++ b/numpy/lib/arraysetops.py
@@ -174,12 +174,12 @@ def unique(ar, return_index=False,
return_inverse=False):
return ar
if return_inverse or return_index:
- perm = ar.argsort()
+ perm = ar.argsort(kind='mergesort')
aux = ar[perm]
flag = np.concatenate(([True], aux[1:] != aux[:-1]))
if return_inverse:
iflag = np.cumsum(flag) - 1
- iperm = perm.argsort()
+ iperm = perm.argsort(kind='mergesort')
if return_index:
return aux[flag], perm[flag], iflag[iperm]
else:
}}}
--
Ticket URL: <http://projects.scipy.org/numpy/ticket/2063#comment:3>
NumPy <http://projects.scipy.org/numpy>
My example project
More information about the NumPy-Tickets
mailing list