[Numpy-discussion] please change mean to use dtype=float

Sebastian Haase haase at msg.ucsf.edu
Tue Sep 19 20:44:43 EDT 2006


On Tuesday 19 September 2006 17:17, Travis Oliphant wrote:
> Sebastian Haase wrote:
> >On Tuesday 19 September 2006 15:48, Travis Oliphant wrote:
> >>Sebastian Haase wrote:
> >
> ><snip>
> >
> >>>can we please change dtype to default to float64 !?
> >>
> >>The default is float64 now (as long as you are not using
> >>numpy.oldnumeric).
> >>
> >>I suppose more appropriately, we could reduce over float for integer
> >>data-types when calculating the mean as well (since a floating point is
> >>returned anyway).
> >
> >Is now mean() always "reducing over" float64 ?
> >The svn note """Log:
> >Fix mean, std, and var methods so that they reduce over double data-type
> > with integer inputs.
> >"""
> >makes it sound that a float32 input is stays float32 ?
>
> Yes, that is true.  Only integer inputs are changed because you are
> going to get a floating point output anyway.
>
> >For mean calculation this might introduce large errors - I usually would
> >require double-precision for *any*  input type ...
>
> Of course.  The system is not fool-proof.  I hesitate to arbitrarily
> change this.  The advantage of using single-precision calculation is
> that it is faster.  We do rely on the user who expressly requests these
> things to be aware of the difficulties.

I still would argue that getting a "good" (smaller rounding errors) answer 
should be the default -- if speed is wanted, then *that* could be still 
specified by explicitly using dtype=float32  (which would also be a possible 
choice for int32 input) . 
In image processing we always want means to be calculated in float64 even 
though input data is always float32 (if not uint16).

Also it is simpler to say "float64 is the default" (full stop.) - instead 
"float64 is the default unless you have float32" 

Thanks,
Sebastian Haase




More information about the NumPy-Discussion mailing list