Maison >développement back-end >Tutoriel Python >Comment rechercher efficacement une ligne correspondante dans un tableau Numpy ?

Comment rechercher efficacement une ligne correspondante dans un tableau Numpy ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-21 18:17:30599parcourir

How to Efficiently Search for a Matching Row in a Numpy Array?

Comment vérifier efficacement la ligne correspondante d'un tableau Numpy

Pour déterminer si un tableau Numpy contient une ligne spécifique, il est crucial de terminer l'opération dès qu'une correspondance est trouvée, en évitant les itérations inutiles.

Solutions possibles

  • Utilisation de .tolist() : Convertir le tableau à une liste Python et utilisez l'opérateur "in". Cette méthode est particulièrement efficace si la ligne correspondante se trouve près du début du tableau.
  • Utilisation d'une vue : Créez une vue du tableau, permettant une comparaison par ligne avec la ligne cible.
  • Itération sur la liste Numpy : Générez sur les éléments du tableau, en testant chaque ligne par rapport à la ligne cible. Cependant, cette approche est relativement lente.
  • Utilisation des fonctions logiques numpy : Appliquez np.equal() pour effectuer une comparaison par élément, suivi de .all(1).any( ) pour déterminer si une ligne correspond à la cible.

Comparaisons des performances

Le test de ces méthodes sur des tableaux de différentes tailles révèle que les routines numpy excellent systématiquement dans la recherche vitesse. Le temps nécessaire ne dépend pas du fait qu'une correspondance soit trouvée ou manquée.

Par exemple, la méthode numpy "view" recherche un tableau de 300 000 x 3 éléments en 0,01 seconde environ, quel que soit l'endroit où se trouve la ligne cible ou s'il est absent.

En revanche, l'opérateur "in" de Python peut être nettement plus rapide pour les premières correspondances (par exemple, 0,003 secondes), tandis que la technique du générateur est nettement plus lente pour les recherches exhaustives (par exemple, 6,47 secondes).

Conclusion

Pour une correspondance efficace des lignes dans les tableaux Numpy, il est recommandé d'utiliser np.equal() combiné avec .all(1).any(), car il offre des performances constantes quel que soit le résultat de la recherche.

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