numpy测试断言数组不相等



我们有numpy.testing.assert_array_equal来断言两个数组相等。

但是,做numpy.testing.assert_array_not_equal的最佳方法是什么,即确保两个数组不相等?

如果您想专门使用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)

我认为NumPy测试框架中没有直接构建任何东西,但您可以使用:

np.any(np.not_equal(a1,a2))

并使用内置的unittest框架断言true,或者使用NumPy作为assert_equalTrue进行检查,例如

np.testing.assert_equal(np.any(np.not_equal(a,a)), True)

不确定为什么没有发布,可能是我没有正确理解这个问题,但关于呢

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.requests),这将给出:

import numpy as np
import pytest
 
with pytest.raises(AssertionError):
   np.testing.assert_almost_equal(...)

改进已接受的答案,我们可以使assert_array_not_equal如下

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)

最新更新