2015-10-28 32 views
5

Próbuję użyć logical_and z dwóch lub więcej numpy tablic. Wiem, że numpy ma funkcję logical_and(), ale uważam, że prosty operator & zwraca te same wyniki i jest potencjalnie łatwiejszy w użyciu.Różnica między numpy.logical_i and &

Weźmy na przykład trzy zdrobnione tablice a, b i c. Czy np.logical_and(a, np.logical_and(b,c)) jest odpowiednikiem a & b & c?

Jeśli są (bardziej lub mniej) równoważne, jaka jest korzyść z używania logical_and()?

+5

Z http://docs.scipy.org/doc/numpy/reference/generated/numpy.bitwise_and.html bitwise "Oblicza bitowe iloczynowej binarnej reprezentacji liczb całkowitych w tablicach wejściowych" ma zastosowanie tylko do ints i Booleans. Nie jest to dokładnie to samo, co np.logical_i wyjątkiem sytuacji, gdy pracujesz z wartościami binarnymi –

Odpowiedz

1

@ user1121588 odpowiedział większość to w komentarzu, ale aby w pełni odpowiedzieć ...

„bitowe i” (&) zachowuje się tak samo jak logical_and na tablicach logicznych, ale to nie oddaje intencji jak również używanie logical_and i stwarza możliwość uzyskiwania wprowadzających w błąd odpowiedzi w nietrywialnych przypadkach (być może spakowane lub rzadkie tablice).

Aby korzystać logical_and na wielu tablic, zrobić:

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

gdzie argumentem jest lista tyle tablic jak chcesz logical_and razem. Wszystkie powinny mieć ten sam kształt.