如何有效地计算给定数字计数器的方差或标准差?
How to calculate efficiently the variance or standard deviation given a counter of numbers?
给定下一个直方图和 bins 的例子:
import numpy as np
hist = np.array([1,1,2,1,2])
bins = np.array([0,1,2,3,4 ])
¿计算方差最有效的方法是什么?
一种方法是重新创建数组并将其传递给 np.var
函数:
import numpy as np
np.var(np.array([0, 1, 2, 2, 3, 4, 4]))
不过,我觉得这样效率不高。
所以你可以重写 formula:
counts = hist.sum()
mean = (hist*bins).sum() / counts
sum_squares = (bins**2 * hist).sum()
var = sum_squares/counts - mean ** 2
# test
np.isclose(var, np.var(np.repeat(bins, hist)))
输出True
.
给定下一个直方图和 bins 的例子:
import numpy as np
hist = np.array([1,1,2,1,2])
bins = np.array([0,1,2,3,4 ])
¿计算方差最有效的方法是什么?
一种方法是重新创建数组并将其传递给 np.var
函数:
import numpy as np
np.var(np.array([0, 1, 2, 2, 3, 4, 4]))
不过,我觉得这样效率不高。
所以你可以重写 formula:
counts = hist.sum()
mean = (hist*bins).sum() / counts
sum_squares = (bins**2 * hist).sum()
var = sum_squares/counts - mean ** 2
# test
np.isclose(var, np.var(np.repeat(bins, hist)))
输出True
.