我通常使用巨大的模拟。有时候,我需要计算一组粒子的质心。我注意到在很多情况下,numpy.mean()返回的平均值是错误的。我可以看出,这是由于累加器饱和所致。为了避免这个问题,我可以将所有粒子中的所有粒子进行总和分解,但这是不舒服的。任何人都有和想法如何以优雅的方式解决这个问题?错误的numpy平均值?
只是为了piking了你的好奇心,下面的例子产生类似于我在模拟观察的东西:
import numpy as np
a = np.ones((1024,1024), dtype=np.float32)*30504.00005
如果您检查最大值和最小值,您可以:
a.max()
30504.0
a.min()
30504.0
然而,平均值为:
a.mean()
30687.236328125
你可以弄清楚,什么是错的这里。使用dtype = np.float64时不会发生这种情况,所以应该很好地解决单精度问题。
如果这些答案中的任何一个解决了您的问题,您应该接受它。 – tacaswell