[SciPy-user] array mean issue...

Jean-Pascal Mercier Jean-Pascal.Mercier at inrialpes.fr
Wed Jun 11 08:03:03 EDT 2008


Hi Fred,

The problem is the container used to calculate the mean. The default 
behavior is to use the same container as the passed array dtype. When 
the array is really big, the float32 container simply become very 
inefficient which account for the error you've encounter. This can be 
easily solved by providing the dtype as a function parameter.

In [1]: from scipy import *

In [2]: a = rand(400,400,400)

In [3]: b = asarray(a, dtype=float32)

In [4]: a.mean()
Out[4]: 0.500014522905

In [6]: b.mean()
Out[6]: 0.262144

In [6]: b.mean(dtype=float64)
Out[6]: 0.500014522902


Cheers,

/J-Pascal MERCIER
Projet PRIMA - Laboratoire LIG
INRIA Grenoble Rhone-Alpes Research Centre
/


fred wrote:
> Hi,
>
> I get the following issue I don't understand:
>
> marsu:~/{1}/> a=rand(400,400,400)
>
> marsu:~/{2}/> a.mean()
> Out[2]: 0.500002086829
>
> marsu:~/{3}/> b=asarray(a, dtype='f')
>
> marsu:~/{4}/> b.mean()
> Out[4]: 0.262144
>
> What's going on ?
>
> How can I compute the mean on "big" float arrays ?
>
> By "big", I mean that for array of 300x300x300, I get the same results 
> for float32 and float64 arrays.
>
> TIA.
>
> Cheers,
>
>   



More information about the SciPy-User mailing list