如何制作计算列表移动平均值的函数?
How to make function that calculates moving average of a list?
我正在尝试在下面的函数中计算名为 'temp_data' 的列表的移动平均值。移动平均数据应存储在名为 'moving_average' 的列表中。下面的代码的工作原理是 list 'temp_mov' 打印在函数内部(第 12 行),但当我稍后调用该函数时(在代码的最后一行)。在那种情况下,我得到一个空列表。我犯了什么错误?
# calculate moving average of a list of weather data
def make_moving(temps, temp_mov):
''' Create moving average from list weather data'''
cumsum, temp_mov = [0], []
for i, x in enumerate(temps, 1):
cumsum.append(cumsum[i-1] + x)
if i>=N:
moving_ave = round((cumsum[i] - cumsum[i-N])/N, 1)
temp_mov.append(moving_ave)
print(temp_mov)
return temp_mov
make_moving(temp_data, moving_average)
print(moving_average)
您在此处将新列表分配给 temp_mov
:
cumsum, temp_mov = [0], []
因此,当 temp_mov
更改时,moving_average
不会更新。
将make_moving(temp_data, moving_average)
更改为moving_average = make_moving(temp_data)
并删除temp_mov
参数将解决问题。
我正在尝试在下面的函数中计算名为 'temp_data' 的列表的移动平均值。移动平均数据应存储在名为 'moving_average' 的列表中。下面的代码的工作原理是 list 'temp_mov' 打印在函数内部(第 12 行),但当我稍后调用该函数时(在代码的最后一行)。在那种情况下,我得到一个空列表。我犯了什么错误?
# calculate moving average of a list of weather data
def make_moving(temps, temp_mov):
''' Create moving average from list weather data'''
cumsum, temp_mov = [0], []
for i, x in enumerate(temps, 1):
cumsum.append(cumsum[i-1] + x)
if i>=N:
moving_ave = round((cumsum[i] - cumsum[i-N])/N, 1)
temp_mov.append(moving_ave)
print(temp_mov)
return temp_mov
make_moving(temp_data, moving_average)
print(moving_average)
您在此处将新列表分配给 temp_mov
:
cumsum, temp_mov = [0], []
因此,当 temp_mov
更改时,moving_average
不会更新。
将make_moving(temp_data, moving_average)
更改为moving_average = make_moving(temp_data)
并删除temp_mov
参数将解决问题。