Wie genau funktioniert das "spiegeln" - Modus für scipys ndimage Filter arbeiten?
Ich bin andernfalls zu verstehen, wie genau das spiegeln-Modus behandelt meine arrays. Ich habe dieses sehr einfache array:
import numpy as np
from scipy.ndimage.filters import uniform_filter
from scipy.ndimage.filters import median_filter
vector = np.array([[1.0,1.0,1.0,1.0,1.0],[2.0,2.0,2.0,2.0,2.0],[4.0,4.0,4.0,4.0,4.0],[5.0,5.0,5.0,5.0,5.0]])
print(vector)
[[ 1. 1. 1. 1. 1.]
[ 2. 2. 2. 2. 2.]
[ 4. 4. 4. 4. 4.]
[ 5. 5. 5. 5. 5.]]
Anwenden eines einheitlichen (mean) filter mit einer Fenstergröße von 3 bekomme ich die folgende:
filtered = uniform_filter(vector, 3, mode='reflect')
print(filtered)
[[ 1.33333333 1.33333333 1.33333333 1.33333333 1.33333333]
[ 2.33333333 2.33333333 2.33333333 2.33333333 2.33333333]
[ 3.66666667 3.66666667 3.66666667 3.66666667 3.66666667]
[ 4.66666667 4.66666667 4.66666667 4.66666667 4.66666667]]
Wenn ich versuche, Sie zu replizieren die übung mit der hand, die ich bekommen kann, um dieses Ergebnis zu erzielen. Original matrix in grün, Fenster in orange und Ergebnis in gelb. Weiße sind "reflektiert" Beobachtungen.
Ergebnis ist:
Aber wenn ich versuche, ein Fenster der Größe 4 oder 5, die ich nicht in der Lage zu replizieren die Ergebnisse.
filtered = uniform_filter(vector, 4, mode='reflect')
print(filtered)
[[ 1.5 1.5 1.5 1.5 1.5]
[ 2. 2. 2. 2. 2. ]
[ 3. 3. 3. 3. 3. ]
[ 4. 4. 4. 4. 4. ]]
Machst es per hand:
Und ich bekomme:
Wie Fenster behandelt, wenn seine Größe ist auch? Aber wie auch immer, Wenn ich versuche, Sie zu replizieren die Ergebnisse von einem Fenster der Größe 5 und Modus spiegeln kann ich nicht entweder. Obwohl ich würde denken, das Verhalten ist Analog zu der Größe 3.
- Im Bild unten "Tut es mit der hand:" Sie haben nicht zu füllen in der oberen Zeile der erweiterten array richtig. Sie kopiert den Wert
1
vertikal. Mitmode='reflect'
sollte es2
s in der obersten Zeile oberhalb der main (helles gelb) - array. - das ist genau das, was ich wissen möchte, können Sie mir helfen zu verstehen, wie genau der Modus funktioniert? für Fenster der Größe n= 2,3,..., etc ? Ich würde akzeptieren, dass als Antwort auf dieses, ich bin besonders daran interessiert zu wissen, wie windows funktioniert, wenn die dimension ist eine gerade Zahl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nehme an, dass die Daten in einer Achse ist
1 2 3 4 5 6 7 8
. Die folgende Tabelle zeigt, wie die Daten verlängert sich für jeden Modus (vorausgesetztcval=0
):Für die eine noch die Größe der Fenster
n
betrachten der Fenster der Größen+1
und dann nicht mehr die unteren und rechten Ränder. (Die position des Fensters kann verändert werden, indem mit derorigin
argument.)