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 <[email protected]>: >On Wed, Apr 17, 2013 at 10:46 AM, Todd < [email protected] > 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)[0] 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)))[0]+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 >[email protected] >http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
