"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Moyens efficaces pour rechercher une ligne spécifique dans un tableau NumPy : questions et solutions

Moyens efficaces pour rechercher une ligne spécifique dans un tableau NumPy : questions et solutions

Publié le 2024-11-12
Parcourir:263

Efficient Ways to Find a Specific Row in a NumPy Array: Questions and Solutions

Recherche efficace des instances d'une ligne spécifique dans un tableau NumPy

Lorsque vous travaillez avec des tableaux NumPy, il peut être nécessaire de déterminer si le array contient une ligne spécifique, mais la méthode standard contains pour ndarray soulève des questions. Cet article présente des solutions efficaces et pythoniques à ce problème.

Une approche consiste à convertir le tableau NumPy en une liste Python à l'aide de .tolist() et à effectuer des vérifications d'adhésion sur la liste.

a = np.array([[1,2],[10,20],[100,200]])
[1,2] in a.tolist() # Returns True
[1,20] in a.tolist() # Returns False

Une autre méthode consiste à utiliser une vue sur le tableau et à appliquer la fonction .all(1) pour comparer chaque ligne avec la ligne cible par élément .

any((a[:]==[1,2]).all(1)) # Returns True
any((a[:]==[1,20]).all(1)) # Returns False

De plus, on peut générer sur la liste NumPy pour une amélioration potentielle des performances. Cependant, cette approche peut s'avérer inefficace si un résultat n'est pas trouvé rapidement.

any(([1,2] == x).all() for x in a) # Stops on first occurrence

Enfin, les fonctions logiques de NumPy fournissent un moyen concis d'effectuer des comparaisons.

any(np.equal(a,[1,2]).all(1)) # Returns True

Les résultats du benchmark indiquent que les routines numpy maintiennent une vitesse de recherche constante quels que soient les scénarios de réussite ou d'échec. Les approches vue, logique égale et Python dans les opérateurs sont comparables en termes d'efficacité, tandis que le générateur sur NumPy n'est pas recommandé pour les recherches de tableaux complets.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729506017. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

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