2015-10-28 37 views
5

Ich versuche, die logical_and von zwei oder mehr numpy Arrays zu verwenden. Ich weiß, dass numpy die Funktion logical_and() hat, aber ich finde, dass der einfache Operator & die gleichen Ergebnisse liefert und potentiell einfacher zu benutzen ist.Unterschied zwischen numpy.logical_and und &

Betrachten Sie zum Beispiel drei nupfige Arrays a, b und c. Ist np.logical_and(a, np.logical_and(b,c)) entspricht a & b & c?

Wenn sie (mehr oder weniger) gleichwertig sind, was ist der Vorteil der Verwendung von logical_and()?

+5

Von http://docs.scipy.org/doc/numpy/reference/generated/numpy.bitwise_and.html bitweise "Berechnet das bitweise UND der zugrunde liegenden binären Darstellung der Ganzzahlen in den Eingabearrays" gilt nur zu Ints und Booleans. Es ist nicht genau dasselbe wie np.logical_and, außer wenn mit Booleans gearbeitet wird –

Antwort

1

@ user1121588 beantwortet die meisten dieser in einem Kommentar, aber vollständig zu beantworten ...

„Logisches und“ (&) verhält sich ähnlich wie logical_and auf boolean Arrays, aber es vermittelt nicht die Absicht sowie die Verwendung von logical_and und die Möglichkeit, irreführende Antworten in nicht-trivialen Fällen (gepackte oder spärliche Arrays, vielleicht) zu bekommen.

Um logical_and auf mehrere Arrays zu verwenden, tun:

np.logical_and.reduce([a, b, c]) 

wo das Argument eine Liste von so vielen Arrays ist, wie Sie logical_and zusammen wollen. Sie sollten alle die gleiche Form haben.