# [Numpy-discussion] Finding the same value in List

Happyman bahtiyor_zohidov at mail.ru
Wed Apr 17 05:32:26 EDT 2013

``` Hi Todd,
Greaaat thanks for your help.. By the way, the first one (I think) is much simpler.. I tested it and ,of course, it is 1D, but it is also a good idea to consider it for Ndimensional.
I prefer the first one! Do you you think first version is okay to use?

Среда, 17 апреля 2013, 11:02 +02:00 от Todd <toddrjen at gmail.com>:
>On Wed, Apr 17, 2013 at 10:46 AM, Todd  < toddrjen at gmail.com > wrote:
>>x,i=numpy.unique(y, return_inverse=True)
>>f=[numpy.where(i==ind) for ind in range(len(x))]
>>
>>
>
>
>A better version would be (np.where returns tuples, but we don't want tuples):
>
>x,i=numpy.unique(y, return_inverse=True)
>f=[numpy.where(i==ind) for ind in range(len(x))]
>
>You can also do it this way, but it is much harder to read IMO:
>
>x=numpy.unique(y)
>f=numpy.split(numpy.argsort(y), numpy.nonzero(numpy.diff(numpy.sort(y)))+1)
>
>This version figures out the indexes needed to put the values of y in sorted order (the same order x uses), then splits it into sub-arrays based on value.  The principle is simpler but the implementation looks like clear to me.
>
>Note that these are only guaranteed to work on 1D arrays, I have not tested them on multidimensional arrays
>
>_______________________________________________
>NumPy-Discussion mailing list
>NumPy-Discussion at scipy.org
>http://mail.scipy.org/mailman/listinfo/numpy-discussion
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130417/0c284064/attachment.html>
```