什么是最好的方式来声明numpy.array平等?

我想为我的应用程序做一些unit testing,我需要比较两个数组。 由于array.__eq__返回一个新的数组(所以TestCase.assertEqual失败),什么是最好的方式来断言相等?

目前我正在使用

 self.assertTrue((arr1 == arr2).all()) 

但是我不太喜欢它:\

检查numpy.testing的断言函数,例如

assert_array_equal

对于浮点数组,相等性testing可能会失败, assert_almost_equal更可靠。

更新

几个版本之前,numpy获得了assert_allclose ,这是我最喜欢的,因为它允许我们指定绝对误差和相对误差,并且不需要小数舍入作为接近度标准。

我认为(arr1 == arr2).all()看起来不错。 但是你可以使用:

 numpy.allclose(arr1, arr2) 

但不完全相同。

另外一个,和你的例子几乎一样的是:

 numpy.alltrue(arr1 == arr2) 

请注意,scipy.array实际上是一个参考numpy.array。 这使得查找文档更容易。

我发现使用self.assertEqual(arr1.tolist(), arr2.tolist())是比较数组与unittest最简单的方法。

我同意这不是最漂亮的解决scheme,它可能不是最快的,但是对于其余的testing用例来说,它可能更统一,你会得到所有的unittest错误描述,实现起来非常简单。

从Python 3.2开始,你可以使用assertSequenceEqual(array1.tolist(), array2.tolist())

这有附加值显示数组不同的确切项目。