Maison  >  Article  >  développement back-end  >  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

Susan Sarandon
Susan Sarandonoriginal
2024-10-21 18:22:03874parcourir

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 de référence 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 sur un tableau complet.

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