'How do I determine if two lists of numpy arrays are equal

Suppose I have the following arrays:

myarray1 = [np.array([1,2,3,4]),np.array([4,5,6]),np.array([7,8,9])]
myarray2 = [np.array([1,2,3,4]),np.array([4,5,6]),np.array([7,8,9])]

I get an error if I do the following:

myarray1==myarray2

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

My ultimate goal is to see if they are both exactly the same. How can I do that?



Solution 1:[1]

In [21]: alist1 = [np.array([1,2,3,4]),np.array([4,5,6]),np.array([7,8,9])]
    ...: alist2 = [np.array([1,2,3,4]),np.array([4,5,6]),np.array([7,8,9])]
In [22]: alist1==alist2
Traceback (most recent call last):
  Input In [22] in <cell line: 1>
    alist1==alist2
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Do a test like this:

In [26]: [np.array_equal(a,b) for a,b in zip(alist1, alist2)]
Out[26]: [True, True, True]
In [27]: all(_)
Out[27]: True

list equal checks for identical id, and failing that for ==. But == for arrays is elementwise, so doesn't produce a single value for each pair. We have to work around that, getting a single True/False for each pair, and then combining those.

In [28]: [a==b for a,b in zip(alist1, alist2)]
Out[28]: 
[array([ True,  True,  True,  True]),
 array([ True,  True,  True]),
 array([ True,  True,  True])]

Solution 2:[2]

You can use np.array_equal(array1, array2) for this.

Alternatively, all(array1 == array2)

Solution 3:[3]

use .array_equal(). But you need to be careful as you have a list of numpy arrays.

import numpy as np

myarray1 = [np.array([1,2,3,4]),np.array([4,5,6]),np.array([7,8,9])]
myarray2 = [np.array([1,2,3,4]),np.array([4,5,6]),np.array([7,8,9])]


np.array_equal(myarray1[0], myarray2[0])

True

but

np.array_equal(myarray1, myarray2)

False

@hpailj has the solution though for you above. So accept that solution.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 rcshon
Solution 3