Ermitteln, ob ein Numpy-Array eine bestimmte Zeile enthält
Bei der Arbeit mit Numpy-Arrays muss manchmal überprüft werden, ob eine bestimmte Zeile vorhanden ist innerhalb des Arrays. Im Gegensatz zu Standard-Python-Listen bieten Numpy-Arrays einzigartige Nuancen, die bei der Durchführung solcher Prüfungen spezielle Ansätze erfordern.
Numpy-Array-Unterschiede
Im Gegensatz zu Python-Arrays zeigen Numpy-Arrays ein unterschiedliches Verhalten, wenn Testen auf Zeilenexistenz mit dem in-Operator:
<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>
Effiziente Methoden
Um effizient auf Zeilenexistenz in Numpy-Arrays zu prüfen, ziehen Sie die folgenden Methoden in Betracht:
<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>
Überlegungen zur Leistung
Die Leistung dieser Methoden variiert je nach Größe und Struktur des Arrays. Hier sind einige Timings für ein 300.000 x 3-Array:
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
Fazit
Für effiziente Überprüfungen der Zeilenexistenz in Numpy-Arrays wird empfohlen, entweder . tolist(), Numpy-Ansicht oder Numpy-Logikfunktionsmethoden. Die Generatormethode sollte aufgrund ihres erheblichen Leistungsaufwands vermieden werden.
Das obige ist der detaillierte Inhalt vonWie kann festgestellt werden, ob ein Numpy-Array eine bestimmte Zeile enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!