You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于时长不等的逐分钟Numpy数组数据计算每日平均温度

这个场景太常见了——传感器随机启停导致每日数据量参差不齐,直接按1440条切片肯定踩坑。下面给你两种实用解法,按需选择:

方法一:用Pandas快速实现(推荐)

Pandas的分组功能天生就是为这种场景设计的,代码简洁还不容易出错:

  1. 先把numpy数组转换成Pandas的时间序列和DataFrame:
import pandas as pd
import numpy as np

# 假设你的dates和temp是numpy数组
dates = np.array(['2017-10-24 06:18:00.000', '2017-10-24 06:19:00.000', '2018-11-23 16:56:00.000'])
temp = np.array([1, 2, 5])

# 把日期字符串转成Pandas datetime类型
dt_series = pd.to_datetime(dates)
# 提取日期部分(忽略时分秒)作为分组键
df = pd.DataFrame({'temperature': temp, 'date': dt_series.dt.date})
  1. 按日期分组计算平均温度:
# 分组求均值
daily_average = df.groupby('date')['temperature'].mean()

# 如果需要转回numpy数组,直接用.values
daily_average_np = daily_average.values
# 对应的日期可以用daily_average.index获取

注意:如果你的日期字符串格式比较特殊,转换时可以指定format参数避免报错,比如:
pd.to_datetime(dates, format='%Y-%m-%d %H:%M:%S.%f')

方法二:纯Numpy实现(不依赖第三方库)

如果不想引入Pandas,纯Numpy也能搞定,核心是把日期截断到“天”精度:

  1. 将日期字符串转换为numpy的datetime64[D]类型(按天截断):
import numpy as np

dates = np.array(['2017-10-24 06:18:00.000', '2017-10-24 06:19:00.000', '2018-11-23 16:56:00.000'])
temp = np.array([1, 2, 5])

# 转换为天精度的datetime64,同一天的记录会被统一成同一个日期值
dates_daily = np.array(dates, dtype='datetime64[D]')
  1. 获取所有唯一日期,遍历计算每日均值:
# 获取所有不重复的日期
unique_dates = np.unique(dates_daily)

daily_average = []
for day in unique_dates:
    # 筛选出当天的所有温度数据
    mask = (dates_daily == day)
    daily_temp_data = temp[mask]
    # 计算均值并加入列表
    daily_average.append(np.mean(daily_temp_data))

# 转成numpy数组
daily_average_np = np.array(daily_average)

两种方法都能完美处理单日数据量从8条到1440条的情况,不用手动计算天数或者索引,完全按日期自动分组。

内容的提问来源于stack exchange,提问作者Beaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:31:01