After implementation all the possibilities we discuss yesterday mi fastest version is this one: index_nSize=numpy.arange(0,length,nSize) lsPhasedValues = numpy.unique1d(aLoci[numpy.where(aLoci[index_nSize]>0)]) ...
bigaLoci = (aLoci>=r) k = (aLoci>=r).sum() This is taking around 0.12s for my test cases. The other version you proposed: j = numpy.arange(length) j_nSize_mask = ((j%nSize)==0) lsPhasedValues = numpy.unique1d(aLoci[j_nSize_mask&aLoci>=0]) bigaLoci = (aLoci>=r) q = (j_nSize_mask&bigaLoci).sum() k = bigaLoci.sum() This takes 0.75s for the same input. With this I was able to speed up my code in a afternoon more than in the two previous weeks. I don't have enough words to thank you. All the best, Bruno 2010/2/24 Robert Kern <robert.k...@gmail.com> > On Wed, Feb 24, 2010 at 12:38, Bruno Santos <bacmsan...@gmail.com> wrote: > > This is probably me just being stupid. But what is the reason for this > peace > > of code not to be working: > > index_nSize=numpy.arange(0,length,nSize) > > lsPhasedValues = set([aLoci[i] for i in xrange(length) if (i%nSize==0 and > > aLoci[i]>0)]) > > lsPhasedValues1 = numpy.where(aLoci[index_nSize]>0) > > Because this is not correct. where() gives you indices where the > argument is True; you want the values in aLoci. Chris misunderstood > your request. > > -- > Robert Kern > > "I have come to believe that the whole world is an enigma, a harmless > enigma that is made terrible by our own mad attempt to interpret it as > though it had an underlying truth." > -- Umberto Eco > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion