2

我有一件非常具体的事情要做,但不知道如何完成:我有两个列表,x 和 y,对应的值(每个列表中大约 10k)。

首先,我需要根据它们在 x 中的顺序将两个列表分箱,每个箱中有 N 个值。所以我不能预先定义固定的 bin 边缘,我宁愿需要,例如,每个 bin 中有 10 个值。

然后我需要计算每个 x bin 对应的 10 个 y 值的中值。

在最后一步中,我有第三个列表 z,其中包含更多值,例如 x(大约 100k 个值),然后检查每个值,它会落在哪个 x bin 中,并将相应 y bin 的平均值添加到它(类似于:z + mean[y_m:y_n][其中 x_m < z < x_n]))。知道怎么做吗?谢谢!

4

1 回答 1

3

您可以使用list.sort()对数据进行排序,然后使用切片来创建您的 bin:

s.sort()
bins = []
for i in range(0, len(s), 10):
    bin = s[i: i+10]
    bins.append(bin)

要获得每个 bin 的中值,请平均元素的中间值:

medians = []
for bin in bins:
    middle = bin[4:6]
    median = sum(middle) / float(len(middle))
    medians.append(median)

这应该让你开始。我不想剥夺你自己完成程序的乐趣:-)

于 2013-05-20T09:40:00.423 回答