【发布时间】:2018-04-02 19:03:05
【问题描述】:
我写了一个简单的滚动平均函数,效果很好。我也不想使用像 numpy 或 pandas 这样的外部库,你知道的。
def get_rolling_average(data, period):
rolling = []
for i in range (0, len(data)):
end = i + period
nums = data[i:end]
# if i < (period-1):
# nums = data[0:i+1]
# rolling.append(mean(nums))
if len(nums) == period:
rolling.append(mean(nums))
return rolling
def round_nicely(num, places):
return round(num, places)
def mean(lst):
summ = sum(lst[0:len(lst)])
summ = float(summ)
return round_nicely(summ/len(lst),1)
print("Rolling average!")
xl = [45, 51, 73, 82, 76, 56, 57, 78, 89, 59]
print get_rolling_average(xl, 3)
结果是
Rolling average!
[56.3, 68.7, 77.0, 71.3, 63.0, 63.7, 74.7, 75.3]
但是,如果前几个值小于句点,我想包括它们。在这个例子中,它只是 45 和 48。
Rolling average!
[45.0, 48.0, 56.3, 68.7, 77.0, 71.3, 63.0, 63.7, 74.7, 75.3]
where
(45)/1 = 45.0
(45 + 51)/2 = 48.0
我不确定最 Pythonic 的方法来做到这一点。我有点头脑发热,我最有凝聚力的尝试是注释掉的三行,但它跳过了一个值。
【问题讨论】:
标签: python arrays python-2.7 average