gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:26:40 25 4
gpt4 key购买 nike

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

# create example data
x = numpy.random.rand(1000)
y = numpy.random.rand(1000)
# set resolution
xbins = 100
# find x bins
H, xedges, yedges = numpy.histogram2d(x, y, bins=(xbins,xbins) )
# calculate mean and std of y for each x bin
mean = numpy.zeros(xbins)
std = numpy.zeros(xbins)
for i in numpy.arange(xbins):
mean[i] = numpy.mean(y[ numpy.logical_and( x>=xedges[i], x<xedges[i+1] ) ])
std[i] = numpy.std (y[ numpy.logical_and( x>=xedges[i], x<xedges[i+1] ) ])

有没有可能有一种向量化的写法呢?

最佳答案

您不必要地使事情复杂化。您需要知道的是,对于 x 中的每个 bin,nsysy2 是什么, x bin 中 y 值的数量,这些 y 值的总和,以及它们的平方和。您可以获得这些:

>>> 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)

关于python - 平均值取决于相对于第二个变量的分箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com