Maison >développement back-end >Tutoriel Python >Comment une fonction vectorisée NumPy peut-elle justifier efficacement un tableau NumPy dans plusieurs directions ?

Comment une fonction vectorisée NumPy peut-elle justifier efficacement un tableau NumPy dans plusieurs directions ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 14:49:17704parcourir

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

Justifier un tableau NumPy avec une fonction vectorisée généralisée

Introduction

Justifier un tableau NumPy fait référence à déplacer les éléments non nuls d'un côté du tableau, ce qui facilite la manipulation ou le traitement. Alors que la fonction Python fournie se concentre sur la justification à gauche d'une matrice 2D, une approche plus efficace et plus complète consiste à utiliser une fonction vectorisée NumPy.

Fonction vectorisée NumPy pour la justification de tableau

La fonction suivante, justifier, fournit un moyen généralisé de justifier un tableau 2D à la fois à gauche et à droite, ainsi que de haut en bas. directions :

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

Paramètres :

  • a : Le tableau NumPy d'entrée à justifier.
  • invalid_val : (Facultatif) Le valeur non valide avec laquelle remplir le tableau justifié. La valeur par défaut est 0.
  • axis : L'axe le long duquel la justification doit être effectuée. 1 pour les lignes, 0 pour les colonnes.
  • côté : Le sens de justification. « gauche », « droite », « haut » ou « bas ».

Exemples d'utilisation :

  • Justification à gauche :
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]]
  • Haut Justification :
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]]

Avantages de la fonction NumPy :

  • Vectorisé : Utilise les opérations vectorisées de NumPy pour le haut performances.
  • Généralisé : Prend en charge la justification dans les quatre directions.
  • Compatible avec les formes de tableaux arbitraires : Justifie les tableaux de n'importe quelle dimension.
  • Valeur invalide personnalisable : Permet de spécifier la valeur de remplissage pour invalide positions.
  • Intègre la gestion des valeurs nulles :Masque automatiquement les valeurs NaN (si invalid_val est défini sur NaN).

Conclusion

La fonction NumPy fournie, justifier, offre un moyen robuste et efficace de justifier les tableaux NumPy. Son caractère généralisé et sa mise en œuvre vectorisée en font un outil polyvalent pour les tâches de manipulation et de traitement de tableaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn