Numpy fournit des moyens efficaces de justifier des tableaux à l'aide de fonctions vectorielles, offrant des performances et des codes améliorés par rapport aux boucles Python traditionnelles. Éléments non nuls à gauche, droite, haut ou vers le bas tout en maintenant sa forme.
L'implémentation Numpy suivante effectue une justification efficace:
Cette fonction justifie un tableau 2D le long de l'axe et du côté spécifié (gauche, droite, haut, vers le bas). It works by identifying non-zero elements using mask, sorting them using sort, flipping the mask if justifying upwards or leftwards, and finally overwriting the original array with the justified values.
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
Here's a usage example that covers non-zero elements to the left:
output:
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)
justifiant un tableau générique n dimensionnel
Original Array: [[1 0 2 0] [3 0 4 0] [5 0 6 0] [0 7 0 8]] Covered Left: [[1 2 0 0] [3 4 0 0] [5 6 0 0] [7 8 0 0]]
Cette fonction prend en charge des scénarios plus complexes en justifiant un tableau N dimensionnel le long d'un axe arbitraire et en «front» ou «end» du tableau.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3