我遇到了Numpy阵列的一些问题,我偶然发现了它,这让我很困惑。
我正在尝试使用array_equal
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正在进行比较错误并且没有明显的理由来舍入数字吗?
答案 0 :(得分:0)
我认为updated_image_values
已经完成了一些操作。这些数字是什么类?
我的猜测是你所看到的不是“四舍五入”,而是与类的__str__
或__repr__
函数有关。当您打印列表时看到0.90980393的事实意味着该元素实际上没有舍入到0.909804。试试"{0:.10f}".format(updated_image_values[j][k][0])
。
至于比较,您可能会看到浮点运算更改了值,使其超出array_equal
的容差范围。尝试使用isclose
instead。