以下语句在我的测试中通过。
self.assertEqual(3.3, np.asarray([3.3]))
其中一种是numpy.float64
,另一种是numpy.ndarray
,我的假设是此测试会失败,但会通过。
以下语句打印[ True]
print(3.3 == np.asarray([3.3]))
进一步调试显示assertEquals
最终调用unittest.case.TestCase#_baseAssertEqual
,使用==
检查相等性:
if not first == second:
standardMsg = '%s != %s' % _common_shorten_repr(first, second)
msg = self._formatMessage(msg, standardMsg)
raise self.failureException(msg)
有人可以解释为什么以及测试self.assertEqual(3.3, np.asarray([3.3]))
如何通过?
编辑:如果您将一个值的数组与变量进行比较,以及此行为记录在哪里,==
如何工作?
答案 0 :(得分:1)
ndarrays上的算术和比较操作定义为 元素操作,通常产生ndarray对象 结果。
对ndarrays的==
操作返回另一个ndarray,而不是一个布尔True
或False
。
这对于数据处理非常有用,但它与几乎所有其他python对象都不同,A == B
将返回一个简单的布尔值。
答案 1 :(得分:0)
在Python
中,可以在特定类型上添加多个__eq__
方法,以使其与另一种方法相媲美。可能用numpy.ndarray
完成某种操作。
在检查a == b
的情况下,它会转换为a.__eq__(b)
。如果a
的类型已为__eq__
的类型实施b
方法比较,则可将其与==
进行比较。
来源:https://docs.python.org/3/reference/datamodel.html#object.eq