Menu
CoddyTech

传感器读数

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 58 课,共 60 课。

传感器每小时记录一次服务器机房的温度,从第 0 小时(午夜)到第 23 小时。如果读取失败,它会写入 -999。

技术人员希望汇总每天的数据,排除故障数据,并像星期一(第 1 天)那样绘制图表:

一张标题为服务器机房温度的折线图:夜间温度约为 17 C,随后折线逐渐上升,在第 14 小时达到 29.4 C 的峰值,之后逐渐下降,到午夜时降至 18 C

室温高于 25 C 时,需要留意一下。

challenge icon

挑战

困难

起始代码在 week 中存储了 4 天的读数,每天一行,并读取一个 1 到 4 的日期编号。

  1. 输出当天读数失败的数量。
  2. 使用 np.round 将有效读数的平均值四舍五入到小数点后 1 位并输出,同时输出高于 limit 的读数数量。
  3. 输出温度最高的小时及其读数。
  4. 使用 fig, ax 形式绘制有效读数随小时变化的图表,标题为 Server Room Temperature,标签为 Hour 和 Temperature (C)。

对于第 1 天,完整输出如下:

Failed readings: 3
Average: 21.9
Hours above 25: 7
Warmest: hour 14 at 29.4
Charts drawn: 1
Title: Server Room Temperature
X label: Hour
Y label: Temperature (C)
Lines: 1
Across (x): [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23]
Up (y): [17.2, 16.8, 16.5, 16.1, 16.4, 17.9, 19.6, 21.8, 23.5, 25.1, 27.9, 28.8, 29.4, 28.7, 27.2, 25.6, 23.9, 21, 19.8, 18.6, 17.9]

亲手试试

import numpy as np
import matplotlib.pyplot as plt

# 服务器机房在 0 到 23 时的温度(C),每天一行;-999 表示读取失败
week = np.array([
    [17.2, 16.8, 16.5, -999, 16.1, 16.4, 17.9, 19.6, 21.8, 23.5, 25.1, -999,
     27.9, 28.8, 29.4, 28.7, 27.2, 25.6, 23.9, -999, 21.0, 19.8, 18.6, 17.9],
    [-999, 17.4, 17.0, 16.7, 16.6, 17.0, 18.2, 19.9, 21.5, -999, 24.6, 26.0,
     27.1, 27.8, 28.0, 28.3, 26.4, -999, 23.1, 21.7, 20.5, 19.4, 18.8, 18.1],
    [18.3, 18.0, 17.8, 17.5, 17.6, -999, -999, 20.4, 22.9, 25.3, 27.6, 29.5,
     31.0, 32.2, 32.9, 33.1, 32.4, 30.8, 28.7, 26.5, 24.6, 22.8, 21.3, 20.1],
    [16.9, 16.5, 16.2, 16.0, 15.8, 16.1, 16.9, 18.0, 19.4, 20.8, 22.3, 23.6,
     24.7, 26.2, 25.8, 25.1, 24.0, 22.6, 21.3, 20.2, 19.3, 18.5, 17.8, -999],
])
day = int(input())
limit = 25

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

数据与图表中的所有课

自己练习: Python 在线编译器