„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Effiziente Möglichkeiten, eine bestimmte Zeile in einem NumPy-Array zu finden: Fragen und Lösungen

Effiziente Möglichkeiten, eine bestimmte Zeile in einem NumPy-Array zu finden: Fragen und Lösungen

Veröffentlicht am 12.11.2024
Durchsuche:269

Efficient Ways to Find a Specific Row in a NumPy Array: Questions and Solutions

Instanzen einer bestimmten Zeile in einem NumPy-Array effizient finden

Bei der Arbeit mit NumPy-Arrays muss möglicherweise festgestellt werden, ob die Das Array enthält eine bestimmte Zeile, aber die Standardmethode contains für ndarray wirft Fragen auf. In diesem Artikel werden effiziente und pythonische Lösungen für dieses Problem vorgestellt.

Ein Ansatz besteht darin, das NumPy-Array mithilfe von .tolist() in eine Python-Liste zu konvertieren und Mitgliedschaftsprüfungen für die Liste durchzuführen.

a = np.array([[1,2],[10,20],[100,200]])
[1,2] in a.tolist() # Returns True
[1,20] in a.tolist() # Returns False

Eine andere Methode besteht darin, eine Ansicht auf das Array zu verwenden und die Funktion .all(1) anzuwenden, um jede Zeile elementweise mit der Zielzeile zu vergleichen .

any((a[:]==[1,2]).all(1)) # Returns True
any((a[:]==[1,20]).all(1)) # Returns False

Zusätzlich kann man über die NumPy-Liste generieren, um eine potenzielle Leistungssteigerung zu erzielen. Dieser Ansatz kann jedoch ineffizient sein, wenn ein Ergebnis nicht frühzeitig gefunden wird.

any(([1,2] == x).all() for x in a) # Stops on first occurrence

Schließlich bieten die logischen Funktionen von NumPy eine übersichtliche Möglichkeit, Vergleiche durchzuführen.

any(np.equal(a,[1,2]).all(1)) # Returns True

Benchmark-Ergebnisse zeigen, dass die Numpy-Routinen unabhängig von Treffer- oder Misserfolgsszenarien eine konsistente Suchgeschwindigkeit beibehalten. Die View-, Logic Equal- und Python-in-Operator-Ansätze sind hinsichtlich der Effizienz vergleichbar, während der Generator über NumPy für vollständige Array-Suchen nicht empfohlen wird.

Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729506017 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3