我不明白爲什麼將一個float32數組轉換爲float64數組會顯着改變數組的均值。numpy.mean大型數組的精度
import numpy as n
a = n.float32(100. * n.random.random_sample((10000000))+1000.)
b = a.astype(n.float64)
print n.mean(a), a.dtype, a.shape
print n.mean(b), b.dtype, b.shape
結果(應爲約1050,所以float64是正確的。):
1028.346368 float32 (10000000,)
1049.98284473 float64 (10000000,)
在[本文](HTTP://www.cs.yale。 edu/publications/techreports/tr222.pdf),在第2頁中,在公式(1.6)之後,他們描述了他們所稱的_pairwise求和算法_,與您的解決方案相似,並描述了它如何將O(N) O(log N)。 – Jaime 2013-04-24 17:11:06