On Sun, Nov 21, 2010 at 6:43 PM, Keith Goodman <[email protected]> wrote:
> Does np.std() make two passes through the data?
>
> Numpy:
>
>>> arr = np.random.rand(10)
>>> arr.std()
>   0.3008736260967052
>
> Looks like an algorithm that makes one pass through the data (one for
> loop) wouldn't match arr.std():
>
>>> np.sqrt((arr*arr).mean() - arr.mean()**2)
>   0.30087362609670526
>
> But a slower two-pass algorithm would match arr.std():
>
>>> np.sqrt(((arr - arr.mean())**2).mean())
>   0.3008736260967052
>
> Is there a way to get the same result as arr.std() in one pass (cython
> for loop) of the data?

reference several times pointed to on the list is the wikipedia page, e.g.
http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#On-line_algorithm

I don't know about actual implementation.

Josef

> _______________________________________________
> NumPy-Discussion mailing list
> [email protected]
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to