Comparing arrays
Comparing two arrays is not as simple as it may seem. Consider the following code, which is intended to check whether two matrices are close to each other:
A = array([0.,0.]) B = array([0.,0.]) if abs(B-A) < 1e-10: # an exception is raised here print("The two arrays are close enough")
This code raises the exception when the if
statement is executed:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
In this section, we explain why this is so and how to remedy this state of affairs.
Boolean arrays
Boolean arrays are useful for advanced array indexing (refer to section Indexing with Boolean arrays). A Boolean array is simply an array for which the entries have the type bool
:
A = array([True,False]) # Boolean array A.dtype # dtype('bool')
Any comparison operator acting on arrays will create a Boolean array instead of a simple Boolean:
M = array([[2, 3], [1, 4]]) M > 2 # array([[False...