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.
Die folgende Numph-Implementierung führt eine effiziente Rechtfertigung durch:
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]]
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.
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