Spitzendetektion in einem 2D-Array

Hier ist ein Beispiel für eine Python-Funktion, die zum Erkennen von Peaks in einem 2D-Array verwendet werden kann:

def detect_peaks(arr):
    peaks = []
    for i in range(1, arr.shape[0]-1):
        for j in range(1, arr.shape[1]-1):
            if arr[i,j] > arr[i-1,j] and arr[i,j] > arr[i+1,j] and arr[i,j] > arr[i,j-1] and arr[i,j] > arr[i,j+1]:
                peaks.append((i,j))
    return peaks

Diese Funktion nimmt ein 2D-Array als Eingabe und gibt eine Liste von Peak-Koordinaten in Form von Tupeln (i, j) zurück, wobei i der Zeilenindex und j der Spaltenindex des Peak-Elements ist. Die Funktion überprüft, ob das aktuelle Element größer als alle seine benachbarten Elemente ist, wenn dies der Fall ist, wird es als Peak betrachtet.

Sie können diese Funktion wie folgt verwenden:

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(detect_peaks(arr))

Dies gibt [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)] aus.

Beachten Sie, dass dies ein sehr einfaches Beispiel ist und in der Praxis je nach Art Ihrer Daten möglicherweise fortgeschrittenere Peak-Erkennungsalgorithmen verwenden müssen.