Hi!

The following is a known "bug" since at least 2010 [1]:

     import numpy as np
     X = np.ones((50000, 1024), np.float32)
     print X.mean()
     >>> 0.32768


I ran into this for the first time today as part of a larger program. I 
was very surprised by this, and spent over an hour looking for bugs in 
my code before noticing that the culprit was `mean` being broken for 
large float32 arrays. I realize that this behavior is actually 
documented, but it is absolutely non-intuitive. I assume most users 
expect `mean` to just work.

This has been discussed once two years ago [2], but nothing came of 
that. This could be easily fixed by making `np.float64` the default 
dtype (as it already is for integer types), or by at least checking 
inside mean if the passed array was a large np.float32 array and switch 
the dtype to np.float64 in that case. Is there a reason why this has not 
been done?

Cheers

Thomas




[1] 
http://mail.scipy.org/pipermail/numpy-discussion/2010-November/053697.html
[2] 
http://numpy-discussion.10968.n7.nabble.com/Bug-in-numpy-mean-revisited-td1293.html

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to