我注意到numpy.mean()
和numpy.var()
的输出随着参数排序的变化而变化。
只有漂浮物的精确度,或者我错过了什么?
import numpy
l1 = [1.0, 0.69, 0.65, 0.7, 0.64, 0.8]
l2 = [1.0, 0.7, 0.69, 0.65, 0.64, 0.8]
assert sorted(l1) == sorted(l2)
print repr(numpy.mean(l1))
print repr(numpy.mean(l2))
print repr(numpy.var(l1))
print repr(numpy.var(l2))
这是我获得的输出:
0.7466666666666667
0.74666666666666659
0.015522222222222222
0.015522222222222224
答案 0 :(得分:3)
NumPy使用(在本例中)64位浮点数。 Floating point numbers不能代表无限精度的所有数字。
此数据类型可以包含15位有效数字。这意味着您号码中的最后一位数字毫无意义。
因此,要比较我们的数字,请使用numpy.allclose
:
>>> numpy.allclose(numpy.mean(l1), numpy.mean(l2))
True