Python数字在比较中神秘地被舍入

时间:2016-11-20 01:13:24

标签: python arrays numpy

我遇到了Numpy阵列的一些问题,我偶然发现了它,这让我很困惑。

我正在尝试使用array_equal

比较2部分数组
np.array_equal(updated_image_values[j][k],np.array(initial_means[i]))

当数字为

时,返回False
[ 0.90980393  0.8392157   0.65098041]
[ 0.90980393  0.8392157   0.65098041]

以上是我对两个数组的打印。

然而,当我打印出单个元素时,似乎无缘无故地将其整理为

print updated_image_values[j][k][0] #0.909804
print initial_means[i][0]  #0.90980393

然后很明显,当比较这些单个元素时,它会返回False

print updated_image_values[j][k][0]==initial_means[i][0] #False

任何人都可以解释为什么Python正在进行比较错误并且没有明显的理由来舍入数字吗?

1 个答案:

答案 0 :(得分:0)

我认为updated_image_values已经完成了一些操作。这些数字是什么类? 我的猜测是你所看到的不是“四舍五入”,而是与类的__str____repr__函数有关。当您打印列表时看到0.90980393的事实意味着该元素实际上没有舍入到0.909804。试试"{0:.10f}".format(updated_image_values[j][k][0])
至于比较,您可能会看到浮点运算更改了值,使其超出array_equal的容差范围。尝试使用isclose instead