Heim > Backend-Entwicklung > Python-Tutorial > Wie kann festgestellt werden, ob ein Numpy-Array eine bestimmte Zeile enthält?

Wie kann festgestellt werden, ob ein Numpy-Array eine bestimmte Zeile enthält?

Mary-Kate Olsen
Freigeben: 2024-10-21 18:29:02
Original
1005 Leute haben es durchsucht

How to Determine if a Numpy Array Contains a Specific Row?

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>
Nach dem Login kopieren

Effiziente Methoden

Um effizient auf Zeilenexistenz in Numpy-Arrays zu prüfen, ziehen Sie die folgenden Methoden in Betracht:

  • .tolist() Konvertierung: Konvertieren Sie das Numpy-Array in eine Liste und verwenden Sie dann den In-Operator für die Liste:
<code class="python">[1, 2] in a.tolist()  # True
[1, 20] in a.tolist()  # False</code>
Nach dem Login kopieren
  • Numpy-Ansicht:Verwenden Sie eine Ansicht des Arrays, um schnell die Existenz von Zeilen zu überprüfen:
<code class="python">any((a[:]==[1,2]).all(1))  # True
any((a[:]==[1,20]).all(1))  # False</code>
Nach dem Login kopieren
  • Generator über Numpy:Generieren Sie über jede Zeile des Arrays und vergleichen Sie mit der Zielzeile:
<code class="python">any(([1, 2] == x).all() for x in a)  # Stops on first occurrence</code>
Nach dem Login kopieren
  • Numpy-Logikfunktionen: Nutzen Sie Numpy-Logikfunktionen, um den Vergleich durchzuführen:
<code class="python">any(np.equal(a, [1, 2]).all(1))  # True</code>
Nach dem Login kopieren

Ü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
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage