mak*_*ker 89 python unit-testing numpy
我想为我的应用程序进行一些单元测试,我需要比较两个数组.由于array.__eq__
返回一个新数组(因此TestCase.assertEqual
失败),断言相等的最佳方法是什么?
目前我正在使用
self.assertTrue((arr1 == arr2).all())
Run Code Online (Sandbox Code Playgroud)
但我真的不喜欢它
Jos*_*sef 106
检查断言函数numpy.testing
,例如
assert_array_equal
对于浮点数组,相等性测试可能会失败并且assert_almost_equal
更可靠.
更新
几个版本之前获得numpy,assert_allclose
这是我最喜欢的,因为它允许我们指定绝对和相对误差,并且不需要十进制舍入作为紧密度标准.
Sig*_*gyF 22
我认为(arr1 == arr2).all()
看起来很不错.但你可以使用:
numpy.allclose(arr1, arr2)
Run Code Online (Sandbox Code Playgroud)
但它并不完全相同.
另一种方法,与您的示例几乎相同:
numpy.alltrue(arr1 == arr2)
Run Code Online (Sandbox Code Playgroud)
请注意,scipy.array实际上是一个引用numpy.array.这样可以更轻松地找到文档.
asi*_*eau 16
我发现使用
self.assertEqual(arr1.tolist(), arr2.tolist())
是将数组与unittest进行比较的最简单方法.
我同意它不是最漂亮的解决方案,它可能不是最快的,但它可能在其他测试用例中更加统一,您可以获得所有单元测试错误描述并且实现起来非常简单.
self.assertTrue(np.array_equal(x, y, equal_nan=True))
Run Code Online (Sandbox Code Playgroud)
equal_nan = True
如果你想np.nan == np.nan
退货True
或者您可以使用numpy.allclose与 torelance 进行比较。
从Python 3.2开始,您可以使用assertSequenceEqual(array1.tolist(), array2.tolist())
.
这具有附加价值,可以显示数组不同的确切项目.
归档时间: |
|
查看次数: |
36692 次 |
最近记录: |