Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man Subarrays mit einem bestimmten Schritt in NumPy effizient extrahieren?
Subarrays mit Stride mit NumPy extrahieren
Ein gegebenes NumPy-Array ist oft notwendig, es in Subarrays mit bestimmten Schritten zu unterteilen. In dieser Frage wird untersucht, wie dies mithilfe von Broadcasting und NumPy-Schritten effizient erreicht werden kann.
Lösung 1: Broadcasting
Die Funktion „broadcasting_app“ verwendet Broadcasting, um die gewünschten Subarrays zu erstellen. Es berechnet die Anzahl der Zeilen basierend auf der Größe des Arrays, der Subarray-Länge und dem Schritt. Anschließend wird mithilfe von Broadcasting ein neues Array erstellt, in dem jede Zeile ein Unterarray darstellt.
Lösung 2: NumPy-Strides
Die strided_app-Funktion nutzt den effizienten Schrittverarbeitungsmechanismus von NumPy. Es berechnet die Anzahl der Reihen und Schritte wie zuvor. Dann nutzt es die Funktion as_strided, um ein neues Array mit den gewünschten Schritten und der gewünschten Form zu erstellen.
Beispielverwendung
Um diese Lösungen zu veranschaulichen, betrachten Sie den folgenden Python-Code:
import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) L = 5 # Subarray length S = 3 # Stride print(broadcasting_app(a, L, S)) print(strided_app(a, L, S))
Ausgabe:
[[ 1 2 3 4 5] [ 4 5 6 7 8] [ 7 8 9 10 11]] [[ 1 2 3 4 5] [ 4 5 6 7 8] [ 7 8 9 10 11]]
Beide Ansätze erzeugen die gewünschte Subarray-Matrix effizient.
Das obige ist der detaillierte Inhalt vonWie kann man Subarrays mit einem bestimmten Schritt in NumPy effizient extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!