Heim >Backend-Entwicklung >Python-Tutorial >Wie kann eine vektorisierte NumPy-Funktion ein NumPy-Array in mehreren Richtungen effizient rechtfertigen?

Wie kann eine vektorisierte NumPy-Funktion ein NumPy-Array in mehreren Richtungen effizient rechtfertigen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 14:49:17755Durchsuche

How Can a NumPy Vectorized Function Efficiently Justify a NumPy Array in Multiple Directions?

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:

  • a: Das zu begründende Eingabe-NumPy-Array.
  • invalid_val: (Optional) Das Ungültiger Wert zum Füllen des ausgerichteten Arrays. Der Standardwert ist 0.
  • Achse: Die Achse, entlang derer die Ausrichtung durchgeführt werden soll. 1 für Zeilen, 0 für Spalten.
  • Seite: Die Ausrichtungsrichtung. 'links', 'rechts', 'oben' oder 'unten'.

Verwendungsbeispiele:

  • Linksbündigkeit:
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]]
  • Up Begründung:
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:

  • Vektorisiert: Nutzt die vektorisierten Operationen von NumPy für hoch Leistung.
  • Verallgemeinert: Unterstützt die Ausrichtung für alle vier Richtungen.
  • Kompatibel mit beliebigen Array-Formen: Richtet Arrays jeder Dimension aus.
  • Anpassbarer ungültiger Wert: Ermöglicht die Angabe des Füllwerts für ungültig Positionen.
  • Beinhaltet die Handhabung von Nullwerten: Maskiert automatisch NaN-Werte (wenn invalid_val auf NaN gesetzt ist).

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!

Stellungnahme:
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