gpt4 book ai didi

python - numpy/python中的加权平均值

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:35 26 4
gpt4 key购买 nike

我有一个很大的连续值数组,范围从 (-100, 100)

现在对于这个数组,我想计算加权平均值 described here

因为它是连续的,我还想每 20 次为值设置一次中断即值应该是离散的-100-80-60....6080100

我一般如何在 NumPy 或 python 中执行此操作?

编辑:这里与正常平均值的不同之处在于,平均值是根据值的频率计算的

最佳答案

您实际上有 2 个不同的问题。

  1. 如何使数据离散化,以及
  2. 如何进行加权平均。

通常一次问 1 个问题会更好,但无论如何。

根据您的规范:

xmin = -100
xmax = 100
binsize = 20

首先,让我们导入 numpy 并制作一些数据:

import numpy as np
data = numpy.array(range(xmin, xmax))

然后让我们进行您正在寻找的分箱:

bins_arange = numpy.arange(xmin, xmax + 1, binsize) 

据此我们可以将数据转换为离散形式:

counts, edges = numpy.histogram(data, bins=bins_arange)

现在要计算加权平均值,我们可以使用分箱中间(例如 -100 和 -80 之间的数字平均为 -90):

bin_middles = (edges[:-1] + edges[1:]) / 2

请注意,与整数除法相反,此方法不要求分箱均匀“间隔”。

然后让我们做一些权重:

weights = numpy.array(range(len(counts)) / sum(range(len(counts))

然后把它们放在一起:

average =          np.sum(bin_middles * counts * 1) / sum(counts)
weighted_average = np.sum(bin_middles * counts * weights) / sum(counts)

关于python - numpy/python中的加权平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057046/

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