【发布时间】:2010-11-13 14:00:26
【问题描述】:
我有一个数字列表数组,例如:
[0] (0.01, 0.01, 0.02, 0.04, 0.03)
[1] (0.00, 0.02, 0.02, 0.03, 0.02)
[2] (0.01, 0.02, 0.02, 0.03, 0.02)
...
[n] (0.01, 0.00, 0.01, 0.05, 0.03)
我想做的是有效地计算列表的每个索引处所有数组元素的均值和标准差。
为了做到这一点,我一直在遍历数组并对列表的给定索引处的值求和。最后,我将“平均值列表”中的每个值除以 n(我正在处理一个总体,而不是总体中的样本)。
为了计算标准差,我再次循环,现在我已经计算了平均值。
我想避免通过数组两次,一次用于平均值,然后一次用于 SD(在我得到平均值之后)。
有没有一种有效的方法来计算这两个值,只遍历一次数组?任何解释语言(例如 Perl 或 Python)或伪代码的代码都可以。
【问题讨论】:
-
语言不同,但算法相同:stackoverflow.com/questions/895929/…
-
维基百科有一个 Python 实现 en.wikipedia.org/wiki/…
-
也许可以试试这个现有的 Welford 算法的 numpy 实现:github.com/a-mitani/welford
-
@AlexReynolds 我想把它翻译成 pytorch 但是......所以需要复制粘贴部分......但也许可以用于那个或只是插入和播放...... .thanks 稍后会看到。
标签: python perl statistics