Heim >Backend-Entwicklung >Python-Tutorial >Effiziente Möglichkeiten, eine bestimmte Zeile in einem NumPy-Array zu finden: Fragen und Lösungen
Effizientes Finden von Instanzen einer bestimmten Zeile in einem NumPy-Array
Bei der Arbeit mit NumPy-Arrays muss möglicherweise festgestellt werden, ob die 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 für generieren eine potenzielle Leistungssteigerung. 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 präzise Möglichkeit, Vergleiche durchzuführen.
any(np.equal(a,[1,2]).all(1)) # Returns True
Benchmark-Ergebnisse zeigen dies Die Numpy-Routinen sorgen für eine konsistente Suchgeschwindigkeit, unabhängig von Treffer- oder Misserfolgsszenarien. 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.
Das obige ist der detaillierte Inhalt vonEffiziente Möglichkeiten, eine bestimmte Zeile in einem NumPy-Array zu finden: Fragen und Lösungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!