Рассчитать результат по предыдущему пункту в списке результатов - PullRequest
0 голосов
/ 12 июня 2018

У меня возникли проблемы с вычислением списка чисел.Первоначальный список соответствует данным о температуре, и мне нужно рассчитывать температуру RunningMean каждый день.Среднее значение для каждого дня зависит от среднего значения предыдущего дня, а также от температуры предыдущего дня (и константы).

Учитывая, что у меня есть список с температурой, я определяюсписок RunningMean как копию, а затем заменяющий каждый элемент по формуле.

Temperature = [14.5, 13, 15, 16]
RunningMean = Temperature
RMConstant = 0.8
for i in RunningMean [1:3]:         
    RunningMean [i] = (1-RMConstant)*Temperature[i-1]+RMConstant*RMean[i-1]
#I skip the first item to avoid problems when calling i-1 index
#Replace each item in RunningMean with the result of the formula

По какой-то причине итерация в строке 5 дает мне следующую ошибку: ожидаемое значение индекса, полученоfloat

Есть идеи, что происходит не так?Возможно, это основная ошибка, но я уже несколько дней чешу голову.

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Здесь, в вашем коде, RunningMean [1:3] возвращает [13, 15], который является нарезанной версией RunningMean.

Что вы должны сделать вместо RunningMean[1:3] в цикле for, замените его на range(1,len(RunningMean)).Это даст вам желаемый результат.

0 голосов
/ 12 июня 2018
Temperature = [14.5, 13, 15, 16]
RunningMean = Temperature
RMConstant = 0.8
for i in range(1,len(RunningMean)):
    RunningMean [i] = (1-RMConstant)*Temperature[i-1]+RMConstant*RunningMean[i-1]

Я не знал, что такое RMean, поэтому вместо этого использовал RunningMean, чтобы увидеть результаты при его попытке.

...