Мне нужно создать небольшие фрагменты из набора данных. Затем вычислите среднее значение каждого фрагмента. Наконец, создайте список или массив для хранения всех этих средств. Моя цель — автоматизировать процесс. Например: мои данные [2,5,1,5,3,8,4,2,33,65,34,11,42]. Если размер фрагмента равен 3, я ожидаю:
part0 = mydata[0 : 3] => 2, 5, 1 => mean0 = 2.66
part1 = mydata[3 : 6] => 5, 3, 8 => mean1 = 5.33
part2 = mydata[6 : 9] => 4, 2, 33 => mean2 = 13.0
part3 = mydata[9 : 12] => 65, 34, 11 => mean3 = 36.66
part4 = mydata[12 : ] => 42 => mean4 = 42.0
list_of_means = {mean0, mean1, mean2, mean3, mean4}
Я просто не мог понять, как создать список средств.
Ниже приведен код, который я пытался использовать с помощью цикла For и eval().
import numpy as np
mydata = [2,5,1,5,3,8,4,2,33,65,34,11,42]
chunk_size = 3
index_ref = [n for n in range(len(mydata*1000))]
for i in range(0, len(mydata)):
globals()[f"part{i}"] ='mydata['+str(index_ref[i*chunk_size])+' : '+str(index_ref[(i*chunk_size)+chunk_size])+']' #This works
globals()[f"mean{i}"] = eval(np.mean(eval('part'+str(i)))) #This brings an error
с чего начинается программа? с блоком с импортом или в блоке выше? Не понимаю, почему вы используете глобальные переменные и eval. Это обязательное условие?
попробуйте eval('np.mean(part+str({i}))') с eval less... Я не пробовал, но удачи
подобное может повысить производительность
range(len(mydata)*1000)
Привет @cards, спасибо, что заглянули. Если я сделаю это eval('np.mean(part+str({i}))', это приведет к ошибке, в которой говорится, что «часть» не определена.
все еще есть проблема?
этот диапазон (len (mydata) * 1000) был просто избавлением от ошибки. У меня возникала проблема «вне диапазона», если я использовал только диапазон (len (mydata))