[SciPy-user] probably a stupid question: MatLab equivalent of "diff" ?
Stef Mientki
s.mientki at ru.nl
Fri Dec 29 12:22:57 CST 2006
hi Tom,
Tom Denniston wrote:
> It would help if you could give a concrete example with a small set of
> data as below to demonstrate the problem:
>
>
>>> # the orginal array
>>> a = array([True,True,False,False,True,True])
>>> B = numpy.diff(a)
>>> B
array([False, True, False, True, False], dtype=bool)
>>> # now elements B[1] and B [3] are true, so both edges
>>> # that doesn't seem to be unlogical, if we try to subtract booleans
>>> True - False
1
>>> False - True
-1
And now I guess that both -1 and +1 are translated into True,
and can't be distinguished anymore :-(
>>> # and now also this doesn't work: again 2 edges
>>> a[1:] - a[:-1]
array([False, True, False, True, False], dtype=bool)
>>> a[1:] - a[:-1] > 0
array([False, True, False, True, False], dtype=bool)
>>> # So the first thing that worked:
>>> a[1:] & ~(a[:-1])
array([False, False, False, True, False], dtype=bool)
And that was (besides the history element) the solution I posted in the
previous mail.
Due to some typing error, I thought my editor didn't except the "&" and
"~ ",
and therefore I used the longer logical_and, logical_not.
Now I can live quiet well with this,
but as Newbie I want to know that's the correct way,
or are their better ways ?
thanks,
Stef
More information about the SciPy-user
mailing list