Subarrays aus Numpy Array mit Stride/Stepsize übernehmen
In diesem Zusammenhang diskutieren wir einen effizienten Ansatz in Python NumPy, um Subarrays aus einem zu erstellen gegebenes Array mit einem bestimmten Schritt.
Um dies zu erreichen, untersuchen wir zwei Methoden:
1. Broadcasting-Ansatz:
def broadcasting_app(a, L, S): nrows = ((a.size - L) // S) + 1 return a[S * np.arange(nrows)[:, None] + np.arange(L)]
Bei dieser Methode wird Broadcasting verwendet, um eine Schrittmatrix zu erstellen.
2. Effizienter NumPy-Strides-Ansatz:
def strided_app(a, L, S): nrows = ((a.size - L) // S) + 1 n = a.strides[0] return np.lib.stride_tricks.as_strided(a, shape=(nrows, L), strides=(S * n, n))
Diese Methode nutzt die effizienten Schritte von NumPy, um die Subarray-Matrix zu erstellen.
Beispiel:
Bedenken Sie ein Array a:
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
Um Unterarrays zu erstellen der Länge 5 mit einem Schritt von 3 können wir eine der beiden Methoden verwenden:
subarrays_broadcasting = broadcasting_app(a, L=5, S=3) subarrays_strides = strided_app(a, L=5, S=3)
Beide Ansätze führen zu folgendem Ergebnis:
[[ 1 2 3 4 5] [ 4 5 6 7 8] [ 7 8 9 10 11]]
Das obige ist der detaillierte Inhalt vonWie erstelle ich im Handumdrehen effizient Subarrays aus einem NumPy-Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!