[SciPy-user] Extrema finding
Alan Jackson
alan at ajackson.org
Fri Oct 10 21:14:49 EDT 2008
On Thu, 9 Oct 2008 13:06:33 -0600
David Bolme <bolme1234 at comcast.net> wrote:
> This is a version for finding extrema in a 2D array. It requires the
> ndimage maximum/minimum filters. For the one dimensional case
> substitute size=[3] or use maximum_filter1d. I keep writing this code
> over and over. I am surprised that there is not a general purpose
> extrema finding routine in scipy.
>
> def localMax(mat):
> mx = maximum_filter(mat, size=[3,3])
> mn = minimum_filter(mat, size=[3,3])
>
> # (mat == mx) true if pixel is equal to the local max
> # The next computation suppresses responses where
> # the function is flat.
> local_maxima = ((mat == mx) & (mat != mn))
>
> # Get the indices of the maxima
> extrema = nonzero(local_maxima)
> return extrema
>
>
Here's one I wrote a few months back...
def extrema(trace)
a = np.sign(np.diff(trace))
zerolocs = np.transpose(np.where(a[1:]+a[0:-1]==0.)).flatten() + 1
if zerolocs[0] < 1:
zerolocs = zerolocs[1:]
if zerolocs[-1]>len(a)-2:
zerolocs = zerolocs[0:-1]
return zerolocs
--
-----------------------------------------------------------------------
| Alan K. Jackson | To see a World in a Grain of Sand |
| alan at ajackson.org | And a Heaven in a Wild Flower, |
| www.ajackson.org | Hold Infinity in the palm of your hand |
| Houston, Texas | And Eternity in an hour. - Blake |
-----------------------------------------------------------------------
More information about the SciPy-User
mailing list