numpy 测试断言数组不等于
numpy testing assert array NOT equal
我们numpy.testing.assert_array_equal
断言两个数组相等。
但是最好的方法是 numpy.testing.assert_array_not_equal
,即确保两个数组不相等?
我认为 NumPy 测试框架没有直接内置任何东西,但您可以使用:
np.any(np.not_equal(a1,a2))
并使用内置的单元测试框架断言为真或使用 NumPy 检查 assert_equal
到 True
,例如
np.testing.assert_equal(np.any(np.not_equal(a,a)), True)
如果你想专门使用 NumPy 测试,那么你可以使用 numpy.testing.assert_array_equal
和 numpy.testing.assert_raises 来获得相反的结果。例如:
assert_raises(AssertionError, assert_array_equal, array_1, array_2)
还有numpy.testing.utils.assert_array_compare
(它被numpy.testing.assert_array_equal
使用),但我没有看到任何地方记录它,所以谨慎使用。这将检查每个元素是否不同,所以我想这不是您的用例:
import operator
assert_array_compare(operator.__ne__, array_1, array_2)
不知道为什么没有发布,可能是我没有正确理解这个问题,但是呢:
assert not np.array_equal(array1 , array2)
为什么你想将它专门保留在 numpy 的测试模块中?
@Eswcvlad 的回答语法更清晰:
import numpy as np
with np.testing.assert_raises(AssertionError):
np.testing.assert_array_equal(expected, actual)
也许您通常想测试某项是否几乎相等(考虑到小数精度),因此在某些情况下想要测试某项是否几乎不相等。基于@Mikhail 的回答(也使用 pytest.raises)这将给出:
import numpy as np
import pytest
with pytest.raises(AssertionError):
np.testing.assert_almost_equal(...)
我们numpy.testing.assert_array_equal
断言两个数组相等。
但是最好的方法是 numpy.testing.assert_array_not_equal
,即确保两个数组不相等?
我认为 NumPy 测试框架没有直接内置任何东西,但您可以使用:
np.any(np.not_equal(a1,a2))
并使用内置的单元测试框架断言为真或使用 NumPy 检查 assert_equal
到 True
,例如
np.testing.assert_equal(np.any(np.not_equal(a,a)), True)
如果你想专门使用 NumPy 测试,那么你可以使用 numpy.testing.assert_array_equal
和 numpy.testing.assert_raises 来获得相反的结果。例如:
assert_raises(AssertionError, assert_array_equal, array_1, array_2)
还有numpy.testing.utils.assert_array_compare
(它被numpy.testing.assert_array_equal
使用),但我没有看到任何地方记录它,所以谨慎使用。这将检查每个元素是否不同,所以我想这不是您的用例:
import operator
assert_array_compare(operator.__ne__, array_1, array_2)
不知道为什么没有发布,可能是我没有正确理解这个问题,但是呢:
assert not np.array_equal(array1 , array2)
为什么你想将它专门保留在 numpy 的测试模块中?
@Eswcvlad 的回答语法更清晰:
import numpy as np
with np.testing.assert_raises(AssertionError):
np.testing.assert_array_equal(expected, actual)
也许您通常想测试某项是否几乎相等(考虑到小数精度),因此在某些情况下想要测试某项是否几乎不相等。基于@Mikhail 的回答(也使用 pytest.raises)这将给出:
import numpy as np
import pytest
with pytest.raises(AssertionError):
np.testing.assert_almost_equal(...)