Как рассчитать среднюю температуру с 5-минутными интервалами? - PullRequest
0 голосов
/ 10 апреля 2019

У меня проблема с практикой, и мне нужна помощь в расчете средней температуры за 5-минутные интервалы. Вот инструкция от проблемы:

Первый столбец в файле .txt - это время в минутах. Второй столбец в файле .txt - это температура в градусах Фаренгейта.

  • Рассчитать среднюю температуру с 5-минутными интервалами, разрезая массив (также можно сделать с помощью цикла).
  • Построить данные из файла .txt и средние значения на одном графике со временем по оси X и температурой по оси Y.
  • График данных1 красным.
  • Нанесите на график 5-минутные средние значения данных1 синим цветом (нарисуйте их в середине среднего значения, то есть в среднем от 1 до 5 минут, нарисуйте их через 3 минуты).

Я в основном запутался в расчете средней температуры за 5-минутный интервал, а затем о том, как построить график этих средних значений для среднего значения за интервал. Я также включу код, который у меня есть ниже, но он пропускает эти две части проблемы.

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("sample1.txt")    
middle_of_interval = np.average()

plt.plot(data[:,0], data[:,1], "r") 
plt.title("Temperature vs. Time")  
plt.xlabel("Time (minutes)")        
plt.ylabel("Temperature (F)")       
plt.xticks(np.arange(0, 30, 1))     
plt.yticks(np.arange(23, 27, 0.5)) 

1 Ответ

0 голосов
/ 10 апреля 2019

Это всегда хорошая идея, чтобы избежать зацикливания массивов; Лучше придерживаться нарезки и других хитростей.

Вы можете получить скользящую среднюю по 5 элементам массива arr примерно так:

avg = (arr[:-4] + arr[1:-3] + arr[2:-2] + arr[3:-1] + arr[4:]) / 5

Вы также можете свернуть небольшой вагон с временным рядом, например:

boxcar = np.ones(5) / 5
avg = np.convolve(arr, boxcar, mode='valid')

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...