У меня есть несколько пар массивов измерений и время, в которое были сделаны измерения, которые я хочу усреднить. К сожалению, время, в которое эти измерения проводились, не является регулярным или одинаковым для каждой пары.
Моя идея для их усреднения состоит в том, чтобы создать новый массив со значениями в каждую секунду, а затем усреднить их. Это работает, но кажется немного неуклюжим и означает, что мне нужно создавать много излишне длинных массивов.
Примеры входных данных
m1 = [0.4, 0.6, 0.2]
t1 = [0.0, 2.4, 5.2]
m2 = [1.0, 1.4, 1.0]
t2 = [0.0, 3.6, 4.8]
Сгенерированные регулярные массивы для значений каждую секунду
r1 = [0.4, 0.4, 0.4, 0.6, 0.6, 0.6, 0.2]
r2 = [1.0, 1.0, 1.0, 1.0, 1.4, 1.0]
Средние значения до длины самого короткого массива
a = [0.7, 0.7, 0.7, 0.8, 1.0, 0.8]
Моя попытка с учетом списка массивов измерений measurements
и соответствующего списка массивов временных интервалов times
def granulate(values, times):
count = 0
regular_values = []
for index, x in enumerate(times):
while count <= x:
regular_values.append(values[index])
count += 1
return np.array(regular_values)
processed_measurements = [granulate(m, t) for m, t in zip(measurements, times)]
min_length = min(len(m) for m in processed_measurements )
processed_measurements = [m[:min_length] for m in processed_measurements]
average_measurement = np.mean(processed_measurements, axis=0)
Is есть ли лучший способ сделать это, в идеале используя функции numpy?