私は通常、巨大なシミュレーションを行います。場合によっては、粒子の集合の中心を計算する必要があります。私は多くの状況で、numpy.mean()が返す平均値が間違っていることに注意しました。私はそれがアキュムレータの飽和に起因していることを理解することができます。この問題を避けるために、粒子の小さな集合の中のすべての粒子に対して総和を分割できますが、それは不快です。誰もがこの問題を優雅なやり方で解決する方法を持っていますか?あなたは最大値と最小値をチェックすると、あなたが得るnumpy平均値が間違っていますか?
import numpy as np
a = np.ones((1024,1024), dtype=np.float32)*30504.00005
:
a.max()
30504.0
a.min()
30504.0
はちょうどあなたの好奇心をpikingために、次の例では、私は私のシミュレーションで観察するものと同様のものを生み出します
ただし、平均値は
a.mean()
30687.236328125
です。何かが間違っていることがわかりますここに。これは、dtype = np.float64を使用しているときには起こらないので、問題を単精度で解決するのがいいはずです。
これらの回答のいずれかが問題を解決した場合は、それを受け入れる必要があります。 – tacaswell