numpy测试断言数组不相等

时间:2016-07-21 13:46:25

标签: python numpy python-unittest

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

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

5 个答案:

答案 0 :(得分:17)

如果您想使用特定的NumPy测试,那么您可以将numpy.testing.assert_array_equalnumpy.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)

答案 1 :(得分:5)

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

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

并使用内置的单元测试框架断言为true或使用NumPy检查为assert_equalTrue,例如

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

答案 2 :(得分:2)

不确定为什么没有发布,可能是我没有正确理解这个问题,但是怎么样:

assert not np.array_equal(array1 , array2)

你有什么理由想把它专门保留在numpy的测试模块中吗?

答案 3 :(得分:1)

@Eswcvlad的答案的语法更简洁:

import numpy as np

with np.testing.assert_raises(AssertionError):
    np.testing.assert_array_equal(expected, actual)

答案 4 :(得分:0)

也许您通常想测试某些东西是否几乎相等(考虑小数精度),因此在某些情况下想要测试某些东西是否几乎不相等。在@Mikhail答案(并使用pytest.raises)的基础上,这将给出:

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