Heim >Backend-Entwicklung >Python-Tutorial >Wie kann eine vektorisierte NumPy-Funktion ein NumPy-Array in mehreren Richtungen effizient rechtfertigen?
Begründung eines NumPy-Arrays mit einer verallgemeinerten vektorisierten Funktion
Einführung
Begründung eines NumPy-Arrays bezieht sich auf Verschieben von Nicht-Null-Elementen auf eine Seite des Arrays, was die Manipulation oder Verarbeitung erleichtert. Während sich die bereitgestellte Python-Funktion auf die Linksbündigung einer 2D-Matrix konzentriert, ist die Verwendung einer vektorisierten NumPy-Funktion ein effizienterer und umfassenderer Ansatz.
NumPy-vektorisierte Funktion zur Array-Ausrichtung
Die folgende Funktion, justify, bietet eine allgemeine Möglichkeit, ein 2D-Array sowohl links und rechts als auch oben und unten auszurichten Richtungen:
import numpy as np def justify(a, invalid_val=0, axis=1, side='left'): if invalid_val is np.nan: mask = ~np.isnan(a) else: mask = a!=invalid_val justified_mask = np.sort(mask,axis=axis) if (side=='up') | (side=='left'): justified_mask = np.flip(justified_mask,axis=axis) out = np.full(a.shape, invalid_val) if axis==1: out[justified_mask] = a[mask] else: out.T[justified_mask.T] = a.T[mask.T] return out
Parameter:
Verwendungsbeispiele:
a = np.array([[1, 0, 2, 0], [3, 0, 4, 0], [5, 0, 6, 0], [0, 7, 0, 8]]) justified_array = justify(a, side='left') print(justified_array) # Output: # [[1, 2, 0, 0], # [3, 4, 0, 0], # [5, 6, 0, 0], # [7, 8, 0, 0]]
justified_array = justify(a, axis=0, side='up') print(justified_array) # Output: # [[1, 7, 2, 8], # [3, 0, 4, 0], # [5, 0, 6, 0], # [6, 0, 0, 0]]
Vorteile der NumPy-Funktion:
Fazit
Die bereitgestellte NumPy-Funktion justify bietet eine robuste und effiziente Möglichkeit, NumPy-Arrays zu rechtfertigen. Seine verallgemeinerte Natur und vektorisierte Implementierung machen es zu einem vielseitigen Werkzeug für Array-Manipulations- und Verarbeitungsaufgaben.
Das obige ist der detaillierte Inhalt vonWie kann eine vektorisierte NumPy-Funktion ein NumPy-Array in mehreren Richtungen effizient rechtfertigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!