„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können die vektorisierten Funktionen von Numpy Arrays effizient rechtfertigen?

Wie können die vektorisierten Funktionen von Numpy Arrays effizient rechtfertigen?

Gepostet am 2025-03-25
Durchsuche:734

How Can NumPy's Vectorized Functions Efficiently Justify Arrays?

rechtfertigen numpy arrays mit vectorisierten Funktionen

numpy bieten effiziente Möglichkeiten, Arrays mit vektorisierten Funktionen zu rechtfertigen, mit einer verbesserten Leistung und Code -Einfachheit im Vergleich zu traditionellen Python -Loops. seine Elemente ungleich Null links, rechts, oben oder unten, während sie seine Form aufrechterhalten.

numpy lösung

Die folgende Numph-Implementierung führt eine effiziente Rechtfertigung durch:

numpy als np importieren Def Justify (a, Invalid_val = 0, Axis = 1, Side = 'links'): Wenn Invaly_val np.nan ist: mask = ~ np.isnan (a) anders: mask = a! = Invalid_val Justified_mask = np.sort (Maske, Achse = Achse) if (Seite == 'Up') | (Seite == 'links'): Justified_mask = np.flip (Justified_mask, Axis = Achse) out = np.full (a.shape, Invalid_val) Wenn Achse == 1: out [justified_mask] = a [Maske] anders: OUT.T [Justified_mask.t] = A.T [mask.t] return out

Diese Funktion rechtfertigt ein 2D -Array entlang der angegebenen Achse und Seite (links, rechts, oben, unten). Es funktioniert durch die Identifizierung von Elementen ungleich Null unter Verwendung von Maske, sortiert sie mit Sortier, umgedreht die Maske, wenn sie nach oben oder links zu rechtfertigen und schließlich das Original-Array mit den gerechtfertigten Werten zu überschreiben. NP.Array ([1,0,2,0], [3,0,4,0], [5,0,6,0], [0,7,0,8]])) # Abdeckung links couned_left = justify (a, axis = 1, Seite = 'links') print ("Originalarray:") Druck (a) print ("\ ncovered links:") print (covered_left)

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

Originalarray: [[1 0 2 0] [3 0 4 0] [5 0 6 0] [0 7 0 8]] Links abgedeckt: [[1 2 0 0] [3 4 0 0] [5 6 0 0] [7 8 0 0]]

rechtfertigen für ein generisches n-dimensionales Array

für die Rechtfertigung eines n-dimensionalen Arrays können die folgende Funktion verwendet werden:

a = np.array([[1,0,2,0], 
              [3,0,4,0], 
              [5,0,6,0], 
              [0,7,0,8]])

# Cover left
covered_left = justify(a, axis=1, side='left')

print("Original Array:")
print(a)
print("\nCovered Left:")
print(covered_left)

Diese Funktion unterstützt komplexere Szenarien, indem sie ein n-dimensionales Array entlang einer willkürlichen Achse und entweder auf die Vorderseite oder das Ende des Arrays rechtfertigen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3