我通常使用巨大的模擬。有時候,我需要計算一組粒子的質心。我注意到在很多情況下,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