平均值取决于相对于第二变量的分箱

时间:2013-03-18 13:19:08

标签: python numpy

我正在使用python / numpy。作为输入数据,我有大量的值对(x,y)。我基本上想要绘制<y>(x),即某个数据仓y的{​​{1}}的平均值。目前我使用普通的x循环来实现这一点,这非常慢。

for

是否有可能为它进行一种矢量化写作?

2 个答案:

答案 0 :(得分:14)

你不必要地使事情复杂化。您需要知道的是,对于x中的每个bin,nsysy2y中的x值的数量y 1}} bin,这些>>> n, _ = np.histogram(x, bins=xbins) >>> sy, _ = np.histogram(x, bins=xbins, weights=y) >>> sy2, _ = np.histogram(x, bins=xbins, weights=y*y) 值的总和,以及它们的平方和。你可以将它们作为:

>>> mean = sy / n
>>> std = np.sqrt(sy2/n - mean*mean)

从那些:

{{1}}

答案 1 :(得分:1)

如果你可以使用熊猫:

import pandas as pd
xedges = np.linspace(x.min(), x.max(), xbins+1)
xedges[0] -= 0.00001
xedges[-1] += 0.000001
c = pd.cut(x, xedges)
g = pd.groupby(pd.Series(y), c.labels)
mean2 = g.mean()
std2 = g.std(0)