У меня есть набор точек данных, для которых я создал программу, которая будет изучать набор данных, из этого набора берутся все n точек и суммирует их и помещает в новый список , И с этим я могу сделать простые бары.Вычислить дискретное среднее в python
Теперь я хотел бы рассчитать дискретное среднее для моего нового списка.
Формулы Я использую это: t_av=(1/nsmp) Sum[N_i*t_i,{i,n_l,n_u}]
В принципе у меня есть NSMP бункеров, которые имеют N_i
количества в них, t_i
это время бин, и n_l
является первым бин и n_u
последним бункера.
Так что, если мой список таков: [373, 156, 73, 27, 16]
,
У меня есть 5 бункеров, и у меня есть: t_av=1/5 (373*1+156*2+73*3+27*4+16*5)=218.4
Теперь я столкнулся с проблемой. Я пытался с этим:
for i in range(0,len(L)):
sr_vr = L[i]*i
tsr=sr_vr/nsmp
Где NSMP это количество бункеров я могу установить, и я L
рассчитывается. Поскольку диапазон будет идти от 0,1,2,3,4, я не получу правильный ответ, потому что мой первый бит рассчитан на 0. Если я скажу range(1,len(L)+1)
, я получу IndexError: list index out of range
, так как это испортит часть L[i]*i
так как он по-прежнему будет умножать второй (1) элемент списка на 1, а затем он будет одним кратким для последней части.
Как это исправить?
Ваша вторая версия работает, а L [i] * (i + 1) дает неправильный ответ. Я бы не подумал об этом втором способе, который прекрасно работает. Я соглашусь на это через 8 минут: D Btw Я все еще dk, почему этот простой цикл работает неправильно: \ EDIT: У меня есть 'от __future__' часть :) –
Вы переназначаете новое значение' sr_vr' on каждая итерация, когда вы хотите сохранить общую сумму. Поэтому вы должны поставить 'sr_vr = 0' перед циклом, а затем внутри цикла вы будете использовать' sr_vr + = L [i] * (i + 1) '. –
О, да! Спасибо за помощь, очень благодарен :) –