numpy顺序是否依赖?

时间:2017-01-25 22:30:08

标签: python numpy floating-point

我注意到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

1 个答案:

答案 0 :(得分:3)

NumPy使用(在本例中)64位浮点数。 Floating point numbers不能代表无限精度的所有数字。 此数据类型可以包含15位有效数字。这意味着您号码中的最后一位数字毫无意义。 因此,要比较我们的数字,请使用numpy.allclose

>>> numpy.allclose(numpy.mean(l1), numpy.mean(l2))
True