On Mon, Mar 16, 2015 at 11:53 AM, Dave Hirschfeld <dave.hirschf...@gmail.com
> wrote:

> I have a number of large arrays for which I want to compute the mean and
> standard deviation over a particular axis - e.g. I want to compute the
> statistics for axis=1 as if the other axes were combined so that in the
> example below I get two values back
>
> In [1]: a = randn(30, 2, 10000)
>
> For the mean this can be done easily like:
>
> In [2]: a.mean(0).mean(-1)
> Out[2]: array([ 0.0007, -0.0009])
>
>
> ...but this won't work for the std. Using some transformations we can
> come up with something which will work for either:
>
> In [3]: a.transpose(2,0,1).reshape(-1, 2).mean(axis=0)
> Out[3]: array([ 0.0007, -0.0009])
>
> In [4]: a.transpose(1,0,2).reshape(2, -1).mean(axis=-1)
> Out[4]: array([ 0.0007, -0.0009])
>
>
Specify all of the axes you want to reduce over as a tuple.

In [1]: import numpy as np


In [2]: a = np.random.randn(30, 2, 10000)


In [3]: a.mean(axis=(0,-1))

Out[3]: array([-0.00224589, 0.00230759])


In [4]: a.std(axis=(0,-1))

Out[4]: array([ 1.00062771, 1.0001258 ])



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

Reply via email to