使用 Numpy/Python,是否可以从单个函数调用返回均值 AND 方差?
我知道我可以单独做它们,但是计算样本标准差需要平均值。因此,如果我使用单独的函数来获取均值和方差,则会增加不必要的开销。
我尝试在这里查看 numpy 文档(http://docs.scipy.org/doc/numpy/reference/routines.statistics.html http://docs.scipy.org/doc/numpy/reference/routines.statistics.html),但没有成功。
你无法将已知的意思传递给np.std
or np.var
,你必须等待新的标准库statistics module http://www.python.org/dev/peps/pep-0450/,但与此同时,您可以使用以下公式节省一些时间:
In [329]: a = np.random.rand(1000)
In [330]: %%timeit
.....: a.mean()
.....: a.var()
.....:
10000 loops, best of 3: 80.6 µs per loop
In [331]: %%timeit
.....: m = a.mean()
.....: np.mean((a-m)**2)
.....:
10000 loops, best of 3: 60.9 µs per loop
In [332]: m = a.mean()
In [333]: a.var()
Out[333]: 0.078365856465916137
In [334]: np.mean((a-m)**2)
Out[334]: 0.078365856465916137
如果你真的想加快速度,请尝试np.dot
进行平方和求和(因为这就是点积):
In [335]: np.dot(a-m,a-m)/a.size
Out[335]: 0.078365856465916137
In [336]: %%timeit
.....: m = a.mean()
.....: c = a-m
.....: np.dot(c,c)/a.size
.....:
10000 loops, best of 3: 38.2 µs per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)