/
>/ Given a certain value delta, I would like to get a subset of x, named
/>/ y,
/>/ where (y[i+1] - y[i])>= delta
/
So in fact the problem is to find y such that
(y[i(k)+n] - y[i(k)])>= delta
for n<= len(x) - 1 - i
and i(0) = 0, i(k+1) = i(k) + n
? 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
Am Mittwoch, den 09.06.2010, 10:14 +0200 schrieb "V. Armando Solé":
>/ That was my first thought, but that only warrants me to skip one point
/>/ in x but not more than one.
/>/
/>/ >>> x= numpy.arange(10.)
/>/ >>> delta = 3
/>/ >>> print x[(x[1:] - x[:-1])>= delta]
/>/ []
/>/
/>/ instead of the requested [0, 4, 8]
/>/
/>/ Armando
/>/
/>/ Francesc Alted wrote:
/>/ > A Wednesday 09 June 2010 10:00:50 V. Armando Solé escrigué:
/>/ >
/>/ >> Well, this seems to be quite close to what I need
/>/ >>
/>/ >> y = numpy.cumsum((x[1:]-x[:-1])/delta).astype(numpy.int)
/>/ >> i1 = numpy.nonzero(y[1:]> y[:-1])
/>/ >> y = numpy.take(x, i1)
/>/ >>
/>/ >
/>/ > Perhaps this is a bit shorter:
/>/ >
/>/ > y = x[(x[1:] - x[:-1])>= delta]
/>/ >
/>/ >
/>/
/>/
/>/ _______________________________________________
/>/ NumPy-Discussion mailing list
/>/ NumPy-Discussion@scipy.org
<http://mail.scipy.org/mailman/listinfo/numpy-discussion>
/>/ http://mail.scipy.org/mailman/listinfo/numpy-discussion/
/
Playing around with range/arange can be misleading as
>> x[x%4==0]
array([ 0., 4., 8.])
I don't know you really want because your first code
>>> x= numpy.arange(10.)
>>> delta=3
>>> y=[x[0]]
>>> for value in x:
... if (y[-1] -value) < delta:
... y.append(value)
...
>>> y
[0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
Which is not [0, 4, 8].
Bruce
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion