You need to enable JavaScript to run this app. Python使用Numpy将秒级时间差统计值转换为日时分秒格式
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Numpy将秒级时间差统计值转换为日时分秒格式

解决方法

你可以编写一个通用的秒数转换函数,对计算得到的平均、中位数、最大差值统一做格式转换,完整可运行代码如下:

import numpy as np

def sec2dhms(secs):
    # 若需要保留小数秒可删除下方int()转换
    total_sec = int(round(secs))
    # 按单位换算
    day = total_sec // 86400
    remain = total_sec % 86400
    hour = remain // 3600
    remain %= 3600
    minute = remain // 60
    sec = remain % 60
    # 拼接结果,跳过值为0的单位
    res = []
    if day > 0:
        res.append(f"{day}天")
    if hour > 0:
        res.append(f"{hour}小时")
    if minute > 0:
        res.append(f"{minute}分钟")
    if sec > 0 or len(res) == 0:
        res.append(f"{sec}秒")
    return "".join(res)

# 你的原有计算逻辑
dates= np.array(['2017-09-15 07:11:00' ,'2017-09-15 11:25:30', '2017-09-15 12:11:10', '2021-04-07 22:43:12', '2021-04-08 00:49:18'], 
                dtype="datetime64[ns]")

delta_s = np.diff(dates) // 1e9 # nanoseconds to seconds
delta_s = delta_s.astype(np.float64)

delta_avg = np.average(delta_s)
delta_median= np.median(delta_s)
delta_max = np.max(delta_s)
delta_max_index= np.argmax(delta_s)

# 转换并打印结果
print("平均差值:", sec2dhms(delta_avg))
print("中位数差值:", sec2dhms(delta_median))
print("最大差值:", sec2dhms(delta_max))

运行结果示例

使用你提供的测试数据,输出如下:

平均差值: 326天11小时14分35秒
中位数差值: 1小时57分18秒
最大差值: 1305天10小时32分2秒

可选调整

  • 如果需要强制显示所有单位(即使值为0),直接删除拼接逻辑中的条件判断即可
  • 如果需要保留小数秒,修改int转换逻辑、以及秒的输出格式即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 08:54:03