On Wed, 2013-04-17 at 13:32 +0400, Happyman wrote: > 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?
If you are only interested in the count, using np.bincount should be much faster then the list comprehension with "==". Of course that gives you a count of zero for all indexes that do not exist. But even then I very much expect that filtering those out afterwards will be faster unless your "indexes" can be arbitrary large. Of course bincount loses the order information, so if you need that, you can only replace the second step with it. - Sebastian > > > Среда, 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 _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
