Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man Multi-Array-Vereinigungsoperationen mit NumPys „logical_or' effizient durchführen?

Wie kann man Multi-Array-Vereinigungsoperationen mit NumPys „logical_or' effizient durchführen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-07 15:15:14326Durchsuche

How to Efficiently Perform Multi-Array Union Operations with NumPy's `logical_or`?

Numpy logical_or für Multi-Array-Vereinigungsoperationen

Numpys logical_or-Funktion arbeitet mit Paaren von Arrays, was zu der Frage führt, wie effizient kombiniert werden kann mehrere Arrays für Vereinigungsoperationen (ebenso für logical_and und Schnittmengen).

While logical_or selbst akzeptiert nur zwei Argumente, es kann miteinander verkettet werden:

x = np.array([True, True, False, False])
y = np.array([True, False, True, False])
z = np.array([False, False, False, False])
result = np.logical_or(np.logical_or(x, y), z)
# result: [ True,  True,  True,  False]

Ein allgemeinerer Ansatz beinhaltet die Verwendung von Reduce:

result = np.logical_or.reduce((x, y, z))
# result: [ True,  True,  True,  False]

Diese Methode kann auf beide mehrdimensionalen Arrays angewendet werden und Tupel von 1D-Arrays. Darüber hinaus kann functools.reduce von Python auf ähnliche Weise verwendet werden:

result = functools.reduce(np.logical_or, (x, y, z))
# result: [ True,  True,  True,  False]

Der Einfachheit halber stellt Numpy „any“ bereit, das im Wesentlichen eine logische ODER-Reduktion entlang einer Achse durchführt:

result = np.any((x, y, z), axis=0)
# result: [ True,  True,  True,  False]

Ähnlich Die Prinzipien gelten für logical_and und andere logische Operatoren, mit Ausnahme von logical_xor, dem eine entsprechende All/Any-Type-Funktion fehlt.

Das obige ist der detaillierte Inhalt vonWie kann man Multi-Array-Vereinigungsoperationen mit NumPys „logical_or' effizient durchführen?. 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