savgol_filter#
- scipy.signal.savgol_filter(x, window_length, polyorder, deriv=0, delta=1.0, axis=-1, mode='interp', cval=0.0)[Quelle]#
Wendet einen Savitzky-Golay-Filter auf ein Array an.
Dies ist ein 1D-Filter. Wenn x eine Dimension größer als 1 hat, bestimmt axis die Achse, entlang der der Filter angewendet wird.
- Parameter:
- xarray_like
Die zu filternden Daten. Wenn x kein Array mit einfacher oder doppelter Genauigkeit von Gleitkommazahlen ist, wird es vor dem Filtern in den Typ
numpy.float64konvertiert.- window_lengthint
Die Länge des Filterfensters (d.h. die Anzahl der Koeffizienten). Wenn mode ‘interp’ ist, muss window_length kleiner oder gleich der Größe von x sein.
- polyorderint
Die Ordnung des Polynoms, das zur Anpassung der Samples verwendet wird. polyorder muss kleiner als window_length sein.
- derivint, optional
Die Ordnung der Ableitung, die berechnet werden soll. Dies muss eine nicht-negative Ganzzahl sein. Der Standardwert ist 0, was bedeutet, dass die Daten ohne Ableitung gefiltert werden.
- deltafloat, optional
Der Abstand der Samples, auf die der Filter angewendet wird. Dies wird nur verwendet, wenn deriv > 0. Standard ist 1.0.
- axisint, optional
Die Achse des Arrays x, entlang der der Filter angewendet werden soll. Standard ist -1.
- modestr, optional
Muss ‘mirror’, ‘constant’, ‘nearest’, ‘wrap’ oder ‘interp’ sein. Dies bestimmt die Art der Erweiterung, die für das gepaddete Signal verwendet wird, auf das der Filter angewendet wird. Wenn mode ‘constant’ ist, wird der Füllwert durch cval angegeben. Siehe die Hinweise für weitere Details zu ‘mirror’, ‘constant’, ‘wrap’ und ‘nearest’. Wenn der Modus ‘interp’ (Standard) ausgewählt ist, wird keine Erweiterung verwendet. Stattdessen wird ein Polynom vom Grad polyorder an die letzten window_length Werte der Ränder angepasst, und dieses Polynom wird verwendet, um die letzten window_length // 2 Ausgabewerte zu bewerten.
- cvalskalar, optional
Wert zum Auffüllen außerhalb der Ränder des Eingangs, wenn mode ‘constant’ ist. Standard ist 0.0.
- Rückgabe:
- yndarray, gleiche Form wie x
Die gefilterten Daten.
Siehe auch
Hinweise
Details zu den mode Optionen
- ‘mirror’
Wiederholt die Werte an den Rändern in umgekehrter Reihenfolge. Der Wert am nächsten am Rand wird nicht einbezogen.
- ‘nearest’
Die Erweiterung enthält den nächstgelegenen Eingabewert.
- ‘constant’
Die Erweiterung enthält den Wert, der durch das Argument cval angegeben wird.
- ‘wrap’
Die Erweiterung enthält die Werte vom anderen Ende des Arrays.
Zum Beispiel, wenn die Eingabe [1, 2, 3, 4, 5, 6, 7, 8] ist und window_length 7 ist, zeigen die folgenden Beispiele die erweiterten Daten für die verschiedenen mode Optionen (angenommen cval ist 0)
mode | Ext | Input | Ext -----------+---------+------------------------+--------- 'mirror' | 4 3 2 | 1 2 3 4 5 6 7 8 | 7 6 5 'nearest' | 1 1 1 | 1 2 3 4 5 6 7 8 | 8 8 8 'constant' | 0 0 0 | 1 2 3 4 5 6 7 8 | 0 0 0 'wrap' | 6 7 8 | 1 2 3 4 5 6 7 8 | 1 2 3
Hinzugefügt in Version 0.14.0.
Beispiele
>>> import numpy as np >>> from scipy.signal import savgol_filter >>> np.set_printoptions(precision=2) # For compact display. >>> x = np.array([2, 2, 5, 2, 1, 0, 1, 4, 9])
Filter mit einer Fensterlänge von 5 und einem Polynom vom Grad 2. Verwenden Sie die Standardwerte für alle anderen Parameter.
>>> savgol_filter(x, 5, 2) array([1.66, 3.17, 3.54, 2.86, 0.66, 0.17, 1. , 4. , 9. ])
Beachten Sie, dass die letzten fünf Werte in x Samples einer Parabel sind, sodass bei Verwendung von mode=’interp’ (dem Standardwert) mit polyorder=2 die letzten drei Werte unverändert bleiben. Vergleichen Sie dies zum Beispiel mit mode=’nearest’
>>> savgol_filter(x, 5, 2, mode='nearest') array([1.74, 3.03, 3.54, 2.86, 0.66, 0.17, 1. , 4.6 , 7.97])