Close

## Fix : The truth value of an array with more than one element is ambiguous. use a.any() or a.all()

Last Updated on Sunday 9th Oct 2022

The truth value of an array with more than one element is ambiguous. use a.any() or a.all().

For boolean arrays - and comparisons like `<`, `<=`, `==`, `!=`, `>=` and `>` on NumPy arrays return boolean NumPy arrays - you can also use the element-wise bitwise functions (and operators): np.bitwise_and (& operator)

```			```
import numpy as np
first = np.array([1, 2, 3])
second = bool(first)
print(second)

```

```

The output will be this error message:

```			```
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

```

```

The element-wise equivalent for and would be the `np.logical_and` function, similarly you could use `np.logical_or` as equivalent for or.

### Logical_and() function

```			```
import numpy as np
arr = np.array([1, 2, 3])
print(np.logical_and(arr > 1, arr < 3))

```

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

```

```

### Logical_or() function

```			```
import numpy as np
arr1 = np.arange(5)
arr2 = np.arange(5, 10)
arr3 = np.array(['First', 'Second', 'Third', 'Fourth', 'Fifth'])
mask = np.logical_or(arr1 >= 3, arr2 < 3)

```

```
```			```
['Fourth' 'Fifth']

```

```
```			```
import numpy as np
np1 = np.zeros((3,))
np2 = np.ones((3,))
np1 in (np1, np2) # True

```

```

### The Truth Value of an array with more than one element is ambiguous.

```			```
np1 in (np2, np1)

ValueError   Traceback (most recent call last)
<gfd.py> in <module> 1 np1 in (np2, np1)

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

```

```
```			```
np1 == np1

array([ True,  True,  True])

np1 is np1 or np1 == np1 # True

np1 is np2 or np1 == np2 # False

```

```
```			```
any(np1 is e or np1 == e for e in (np2, np1)

ValueError    Traceback (most recent call last)
<gfd.py> in <module> 1 any(np1 is e or np1 == e for e in (np2, np1))

ValueError: The truth value of an array with more than one element is ambiguous. Use `a.any()` or `a.all()`.The issue does not occur when == is never broadcasted.

```

```
```			```
np1 in (np3, np1) # True

```

```