【发布时间】:2013-07-04 06:18:38
【问题描述】:
我通常使用大型模拟。有时,我需要计算粒子集的质心。我注意到在许多情况下, 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 时不会发生这种情况,因此最好解决单精度问题。
【问题讨论】:
-
如果这些答案中的任何一个解决了您的问题,您应该接受它。