Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions lib/iris/tests/unit/util/test_array_equal.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,18 @@ def test_masked_is_different(self):
array_b = ma.masked_array([1, 2, 2], mask=[0, 0, 1])
self.assertFalse(array_equal(array_a, array_b))

def test_masked_isnt_unmasked(self):
array_a = np.array([1, 2, 2])
array_b = ma.masked_array([1, 2, 2], mask=[0, 0, 1])
self.assertFalse(array_equal(array_a, array_b))

def test_masked_unmasked_equivelance(self):
array_a = np.array([1, 2, 2])
array_b = ma.masked_array([1, 2, 2])
array_c = ma.masked_array([1, 2, 2], mask=[0, 0, 0])
self.assertTrue(array_equal(array_a, array_b))
self.assertTrue(array_equal(array_a, array_c))

def test_fully_masked_arrays(self):
array_a = ma.masked_array(np.arange(24).reshape(2, 3, 4), mask=True)
array_b = ma.masked_array(np.arange(24).reshape(2, 3, 4), mask=True)
Expand Down
7 changes: 4 additions & 3 deletions lib/iris/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,8 +395,9 @@ def array_equal(array1, array2, withnans=False):

Notes
-----
This provides much the same functionality as :func:`numpy.array_equal`, but
with additional support for arrays of strings and NaN-tolerant operation.
This provides similar functionality to :func:`numpy.array_equal`, but
will compare arrays as unequal when their masks differ and has
additional support for arrays of strings and NaN-tolerant operation.

This function maintains laziness when called; it does not realise data.
See more at :doc:`/userguide/real_and_lazy_data`.
Expand All @@ -417,7 +418,7 @@ def normalise_array(array):
array1_masked = ma.is_masked(array1)
eq = array1_masked == ma.is_masked(array2)
if eq and array1_masked:
eq = np.array_equal(ma.getmask(array1), ma.getmask(array2))
eq = np.array_equal(ma.getmaskarray(array1), ma.getmaskarray(array2))
if eq:
eqs = array1 == array2
if withnans and (array1.dtype.kind == "f" or array2.dtype.kind == "f"):
Expand Down