Maison >développement back-end >Tutoriel Python >Comment déterminer si un tableau Numpy contient une ligne spécifique ?
Rechercher si un tableau Numpy contient une ligne spécifique
Lorsque vous travaillez avec des tableaux Numpy, il devient parfois nécessaire de vérifier si une ligne spécifique existe au sein du tableau. Contrairement aux listes Python standard, les tableaux Numpy fournissent des nuances uniques qui nécessitent des approches spécialisées lors de l'exécution de telles vérifications.
Différences entre les tableaux Numpy
Contrairement aux tableaux Python, les tableaux Numpy présentent un comportement différent lorsque tester l'existence des lignes à l'aide de l'opérateur in :
<code class="python"># Python Array a = [[1, 2], [10, 20], [100, 200]] [1, 2] in a # True [1, 20] in a # False # Numpy Array a = np.array([[1, 2], [10, 20], [100, 200]]) np.array([1, 2]) in a # True np.array([1, 20]) in a # True (Unexpected)</code>
Méthodes efficaces
Pour vérifier efficacement l'existence des lignes dans les tableaux Numpy, envisagez les méthodes suivantes :
<code class="python">[1, 2] in a.tolist() # True [1, 20] in a.tolist() # False</code>
<code class="python">any((a[:]==[1,2]).all(1)) # True any((a[:]==[1,20]).all(1)) # False</code>
<code class="python">any(([1, 2] == x).all() for x in a) # Stops on first occurrence</code>
<code class="python">any(np.equal(a, [1, 2]).all(1)) # True</code>
Considérations sur les performances
Les performances de ces méthodes varient en fonction de la taille et de la structure du tableau. Voici quelques timings pour un tableau de 300 000 x 3 :
early hit: [9000, 9001, 9002] in 300,000 elements: view: 0.01002 seconds python list: 0.00305 seconds gen over numpy: 0.06470 seconds logic equal: 0.00909 seconds late hit: [899970, 899971, 899972] in 300,000 elements: view: 0.00936 seconds python list: 0.30604 seconds gen over numpy: 6.47660 seconds logic equal: 0.00965 seconds
Conclusion
Pour des vérifications efficaces de l'existence de lignes dans les tableaux Numpy, il est recommandé d'utiliser soit le . tolist(), vue Numpy ou méthodes de fonction logique Numpy. La méthode du générateur doit être évitée en raison de sa surcharge de performances importante.
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!