我有一个非常具体的事情要做,不知道如何做到这一点: 我有两个相应值的列表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]))。 知道怎么做吗?谢谢!
答案 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)
这应该让你开始。我不想让你失去自己完成课程的乐趣: - )