In [1]:
import numpy as np

In [2]:
print(np.__version__)


1.17.3

In [3]:
a_bool = np.array([True, True, False, False])
b_bool = np.array([True, False, True, False])

In [4]:
print(a_bool.dtype)


bool

In [5]:
print(b_bool.dtype)


bool

In [6]:
print(a_bool & b_bool)


[ True False False False]

In [7]:
print(a_bool | b_bool)


[ True  True  True False]

In [8]:
print(a_bool ^ b_bool)


[False  True  True False]

In [9]:
print(~a_bool)


[False False  True  True]

In [10]:
print(type(a_bool & b_bool))


<class 'numpy.ndarray'>

In [11]:
print((a_bool & b_bool).dtype)


bool

In [12]:
# print(a_bool and b_bool)
# ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [13]:
print(np.logical_and(a_bool, b_bool))


[ True False False False]

In [14]:
print(np.logical_or(a_bool, b_bool))


[ True  True  True False]

In [15]:
print(np.logical_xor(a_bool, b_bool))


[False  True  True False]

In [16]:
print(np.logical_not(a_bool))


[False False  True  True]

In [17]:
c_int = np.arange(4)
print(c_int)


[0 1 2 3]

In [18]:
print(np.logical_not(c_int))


[ True False False False]

In [19]:
d_int = c_int + 4
print(d_int)


[4 5 6 7]

In [20]:
print(np.logical_not(d_int))


[False False False False]

In [21]:
print(np.logical_and(c_int, d_int))


[False  True  True  True]

In [22]:
print(c_int & d_int)


[0 1 2 3]

In [23]:
a_bool_2d = np.array([[True, True, False, False], [False, False, True, True]])
print(a_bool_2d)


[[ True  True False False]
 [False False  True  True]]

In [24]:
print(a_bool_2d & b_bool)


[[ True False False False]
 [False False  True False]]

In [25]:
print(np.logical_and(a_bool_2d, a_bool))


[[ True  True False False]
 [False False False False]]

In [26]:
print(a_bool & True)


[ True  True False False]

In [27]:
print(np.logical_and(a_bool, True))


[ True  True False False]

In [28]:
print(c_int)


[0 1 2 3]

In [29]:
print(c_int < 2)


[ True  True False False]

In [30]:
print(c_int % 2 == 0)


[ True False  True False]

In [31]:
print((c_int < 2) & (c_int % 2 == 0))


[ True False False False]

In [32]:
# print(c_int < 2 & c_int % 2 == 0)
# ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [33]:
# print(c_int < (2 & (c_int % 2)) == 0)
# ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

In [34]:
print(np.logical_and(c_int < 2, c_int % 2 == 0))


[ True False False False]