On Wed, Jun 9, 2010 at 11:31 AM, Vicente Sole <s...@esrf.fr> wrote: > It gets even worse with data similar to those I will be using. > > With: > > x0 = numpy.linspace(-1,1, 10000) > niter = 2000 > > I get 24 seconds for option1 and 0.64 seconds for option2. > Considering I expect between 5 and 50 times that number of iterations, > the difference is already quite considerable.
but the two options don't produce the same result in general, the cumsum version doesn't restart from zero, I think try x0 = np.random.randint(5,size=30).cumsum() with delta=3 I don't see a way around recursive looping Josef > Armando > > Quoting Vicente Sole <s...@esrf.fr>: > >>>> ? Well a loop or list comparison seems like a good choice to me. It is >>>> much more obvious at the expense of two LOCs. Did you profile the two >>>> possibilities and are they actually performance-critical? >>>> >>>> cheers >>>> >> >> >> The second is between 8 and ten times faster on my machine. >> >> import numpy >> import time >> x0 = numpy.arange(10000.) >> niter = 2000 # I expect between 10000 and 100000 >> >> >> def option1(x, delta=0.2): >> y = [x[0]] >> for value in x: >> if (value - y[-1]) > delta: >> y.append(value) >> return numpy.array(y) >> >> def option2(x, delta=0.2): >> y = numpy.cumsum((x[1:]-x[:-1])/delta).astype(numpy.int) >> i1 = numpy.nonzero(y[1:]> y[:-1]) >> return numpy.take(x, i1) >> >> >> t0 = time.time() >> for i in range(niter): >> t = option1(x0) >> print "Elapsed = ", time.time() - t0 >> t0 = time.time() >> for i in range(niter): >> t = option2(x0) >> print "Elapsed = ", time.time() - t0 >> >> _______________________________________________ >> 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 > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion