【问题标题】:Different result for the same mathematical operation相同数学运算的不同结果
【发布时间】: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!

标签: python numpy


【解决方案1】:

已解决:您的数组是 uint8,这会导致溢出。您必须先将它们转换为 int

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-09
    • 2016-12-05
    • 2013-11-29
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    相关资源
    最近更新 更多