如何计算两个datetime对象的平均值?列表插入代码结果异常求助
问题排查与修复
你的代码核心问题是运算优先级错误,导致没有正确计算两个时间戳的平均值:
原代码中 offsetMat[i][j].timestamp()+offsetMat[i][j+1].timestamp()/2 会先计算第二个时间戳的一半,再和第一个时间戳相加,这并非两个时间的平均值。正确的平均值逻辑应该是先将两个时间戳求和,再整体除以2。
修复后的代码
# 先对两个时间戳求和,再计算平均值 avg_timestamp = (offsetMat[i][j].timestamp() + offsetMat[i][j+1].timestamp()) / 2 temp = datetime.fromtimestamp(avg_timestamp) offsetMat[i].insert(j, temp)
额外注意事项
- 如果你的
datetime对象包含时区信息(带tzinfo),timestamp()方法会自动转换为UTC时间戳,fromtimestamp()默认会将时间戳转换为本地时区的datetime。若需要保持时区一致性,可以改用datetime.utcfromtimestamp()得到UTC时间,再手动添加对应时区信息。 - 插入新元素后,列表长度会增加,后续遍历操作要注意索引偏移问题,避免出现跳过元素或索引越界的情况。
内容的提问来源于stack exchange,提问作者kfir648
相关产品推荐
相关产品推荐

