【问题标题】:Best way to bin all x values within a range and then take the mean of all y values in each bin?将一个范围内的所有 x 值分箱然后取每个箱中所有 y 值的平均值的最佳方法?
【发布时间】:2020-06-04 01:56:24
【问题描述】:

我有一个 x,y 坐标列表。 x 值接近但不相同。我想在一个范围内将 x 值组合在一起,然后取每个 bin 中 y 值的平均值。我希望最终结果是两个一维数组——一个是合并的 x 值,另一个是相关的 y 平均值。

例如,对于list = ((1.0, 10.2), (1.3, 10.1), (1.6, 10.8), (2.3, 12.0), (2.4, 12.7))

我希望输出为:x = [1.0, 1.5, 2.0]y = [10.15, 10.8, 12.35]

在下面的代码中,我尝试了 scipy 的 stats.binned_statistic,但没有成功,因为我不确定如何指定 bin 大小。在下面的代码中,我在每个 bin 中放置了 10 个元素以尝试使其工作,但实际上我想指定一个范围,例如将彼此相距 0.5 范围内的所有数字合并在一起。

我还查看了numpy.digitize,但如果那是我正在寻找的,则不是。

import numpy as np
from scipy import stats

x = [x_values]
y = [corresponding_y_values]
test = stats.binned_statistic(x, y, 'mean', bins=(len(x))/10)
plt.plot(test)

【问题讨论】:

    标签: python list range mean binning


    【解决方案1】:

    万一其他人以后有同样的问题,我可以解决这个问题:

    y,x,_=stats.binned_statistic(x,l,'mean',bins=np.arange(x[0],x[int(len(x)-1)],(x[int(len(x)-1)]-x[0])/((x[int(len(x)-1)]-x[0])*10)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-17
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多