We have numpy.testing.assert_array_equal to assert that two arrays are equal.
But what is the best way to do numpy.testing.assert_array_not_equal, that is, to make sure that two arrays are NOT equal?
We have numpy.testing.assert_array_equal to assert that two arrays are equal.
But what is the best way to do numpy.testing.assert_array_not_equal, that is, to make sure that two arrays are NOT equal?
If you want to use specifically NumPy testing, then you can use numpy.testing.assert_array_equal together with numpy.testing.assert_raises for the opposite result. For example:
assert_raises(AssertionError, assert_array_equal, array_1, array_2)
Also there is numpy.testing.utils.assert_array_compare (it is used by numpy.testing.assert_array_equal), but I don't see it documented anywhere, so use with caution. This one will check that every element is different, so I guess this is not your use case:
import operator
assert_array_compare(operator.__ne__, array_1, array_2)
I don't think there is anything built directly into the NumPy testing framework but you could just use:
np.any(np.not_equal(a1,a2))
and assert true with the built in unittest framework or check with NumPy as assert_equal to True e.g.
np.testing.assert_equal(np.any(np.not_equal(a,a)), True)
TestCase.assertTrue(np.any(…)) instead (or nose.tools.assert_true(np.any(…)) if you are outside of a TestCase).Not sure why this hasn't been posted, may be I didn't understand the question properly, but what about:
assert not np.array_equal(array1 , array2)
Any reason why you would like to keep it exclusively in the testing module of numpy?
assert_array_equal handles NaN as values, not as uncomparable (always unequal to anything) like usual for floating pointPerhaps you usually want to test if something is almost equal (considering decimal precision) and consequently want to test if something is NOT almost equal in some cases. Building on @Mikhail answer (and also using pytest.raises) this would give:
import numpy as np
import pytest
with pytest.raises(AssertionError):
np.testing.assert_almost_equal(...)
Improving the accepted answer, we can make assert_array_not_equal as follows
from numpy.testing import assert_array_equal, assert_raises
def assert_array_not_equal(x, y):
return assert_raises(AssertionError, assert_array_equal, x, y)