Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man Subarrays mit einem bestimmten Schritt in NumPy effizient extrahieren?

Wie kann man Subarrays mit einem bestimmten Schritt in NumPy effizient extrahieren?

Susan Sarandon
Freigeben: 2024-12-06 09:41:11
Original
811 Leute haben es durchsucht

How to Efficiently Extract Subarrays with a Specific Stride in NumPy?

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))
Nach dem Login kopieren

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]]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage