Consider this code
>>> import numpy as np >>> np.identity(5) array([[ 1., 0., 0., 0., 0.], [ 0., 1., 0., 0., 0.], [ 0., 0., 1., 0., 0.], [ 0., 0., 0., 1., 0.], [ 0., 0., 0., 0., 1.]]) >>> np.identity(5)+np.ones([5,5]) array([[ 2., 1., 1., 1., 1.], [ 1., 2., 1., 1., 1.], [ 1., 1., 2., 1., 1.], [ 1., 1., 1., 2., 1.], [ 1., 1., 1., 1., 2.]]) >>> np.identity(5) == np.identity(5)+np.ones([5,5]) array([[False, False, False, False, False], [False, False, False, False, False], [False, False, False, False, False], [False, False, False, False, False], [False, False, False, False, False]], dtype=bool) >>>
Note that the result of the comparison is a matrix, not a boolean. Comparison Dict will compare values ββusing cmp methods, which means that when comparing matrix values, comparing dict will get a composite result. What you want to do is use numpy.all to collapse the result of a compound array into a scalar boolean result
>>> np.all(np.identity(5) == np.identity(5)+np.ones([5,5])) False >>> np.all(np.identity(5) == np.identity(5)) True >>>
You will need to write your own function to compare these dictionaries, test the types of values ββto see if they are matrices, and then compare using numpy.all , otherwise == used. Of course, you can always get fancy and start subclassing the dict and overloading cmp if you want.