我通常使用大型模拟。有时,我需要计算粒子集的质心。我注意到在许多情况下, numpy.mean() 返回的平均值是错误的。我可以弄清楚这是由于蓄电池饱和造成的。为了避免这个问题,我可以将所有粒子的总和拆分为一小组粒子,但这很不舒服。有人知道如何以优雅的方式解决这个问题吗?
只是为了激发你的好奇心,下面的例子产生了类似于我在模拟中观察到的东西:
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 时不会发生这种情况,因此最好解决单精度问题。