Python:列表,箱子和排序

时间:2013-05-20 09:34:31

标签: python list mapping binning

我有一个非常具体的事情要做,不知道如何做到这一点: 我有两个相应值的列表x和y(每个列表大约10k)。

首先,我需要根据它们在x中的顺序对两个列表进行分区,在每个bin中具有N个值的区间中。因此,我无法预先定义固定的bin边缘,我宁愿在每个bin中需要例如10个值。

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用list.sort()订购数据,然后使用slicing创建广告位:

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)

这应该让你开始。我不想让你失去自己完成课程的乐趣: - )