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
Mary-Kate OlsenOriginal
2024-10-21 18:29:021004Durchsuche

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>

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>
  • 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>
  • 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>
  • Numpy-Logikfunktionen: Nutzen Sie Numpy-Logikfunktionen, um den Vergleich durchzuführen:
<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!

Stellungnahme:
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