我需要在 python 中计算运行中位数。目前我这样做:
med_y = []
med_x = []
for i in numpy.arange(240, 380, 1):
med_y.append(numpy.median(dy[(dx > i)*(dx < i+20)]))
med_x.append(i + 10)
在这里,数据存储在 dx(x 坐标)和 dy(y 坐标)中,中值被 dy 取代并绘制在 dx 上(必须移动 window/2)。假设 x 和窗口大小的均匀间距为 20。
有没有更短的方法?
例如,运行平均可以这样完成:
cs = numpy.cumsum(dy)
y_20 = (cs[20:] - cs[:-20])/20.0
x_20 = dx[10:-10]
在站点包中预定义的运行 X函数也可以。