2015-10-28 61 views
5

Sto provando a utilizzare lo logical_and di due o più array numpy. So che numpy ha la funzione logical_and(), ma trovo che l'operatore semplice & restituisca gli stessi risultati e sia potenzialmente più facile da usare.Differenza tra numpy.logical_and e &

Ad esempio, considerare tre array numpy a, b e c. È np.logical_and(a, np.logical_and(b,c)) equivalente a a & b & c?

Se sono (più o meno) equivalenti, qual è il vantaggio di utilizzare logical_and()?

+5

Da http://docs.scipy.org/doc/numpy/reference/generated/numpy.bitwise_and.html bit a bit "Calcola il bit-saggio AND della rappresentazione binaria sottostante degli interi negli array di input" si applica solo a Ints e Booleans. Non è proprio lo stesso di np.logical_and tranne quando si lavora con i booleani –

risposta

1

@ user1121588 risposto la maggior parte di questo in un commento, ma per rispondere pienamente ...

"Bitwise e" (&) si comporta più o meno come logical_and su array booleani, ma non trasmette l'intento così come usare logical_and, e aumenta la possibilità di ottenere risposte fuorvianti in casi non banali (array compressi o sparsi, forse).

Per utilizzare logical_and su più array, fare:

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

dove l'argomento è una lista di altrettanti array come si desidera logical_and insieme. Dovrebbero essere tutti della stessa forma.