【发布时间】:2017-09-30 06:31:53
【问题描述】:
我正在使用 Python3 和 numpy,我正在执行以下操作:
diff1 = np.abs(self.trainX - sample_repeated)
diff2 = np.abs(sample_repeated - self.trainX)
print("diff1 equals diff2?")
if(np.array_equal(diff1,diff2)):
print("Yes")
else:
print("No")
我希望 diff1 等于 diff2。知道为什么代码总是打印“否”吗?所有数组都相同(self.trainX、sample_repeated、diff1 和 diff2)。
注意:numpy 文档报告 array_equal 为 “如果两个数组具有相同的形状和元素,则为 True,否则为 False。”
已解决:您的数组是 uint8,这会导致溢出。您必须先将它们转换为 int
【问题讨论】:
-
浮点数总是有误差的,所以永远不建议用 == 或类似的方法进行比较。
-
那个重复链接没有回答这个恕我直言。
-
我查过,代码里写的数组都是uint8的。如果它试图求和 255 + 255 怎么办?溢出?
-
大家注意了:这个问题是关于uint8,而不是float!