Python Numpy计算时间间隔统计值及最大索引并转天时分秒的方法
Numpy时间差统计及格式转换实现方案
实现逻辑
你现有代码的统计值计算部分已经符合要求,只需要补充秒数转天/时/分/秒的转换逻辑即可,转换规则基于固定时间换算关系:1天=86400秒、1小时=3600秒、1分钟=60秒。
完整可运行代码
import numpy as np # 秒数转天、小时、分钟、秒格式的通用函数 def sec2dhms(total_sec): day = total_sec // 86400 remain = total_sec % 86400 hour = remain // 3600 remain = remain % 3600 minute = remain // 60 second = remain % 60 return int(day), int(hour), int(minute), int(second) # 原有业务代码 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 # 纳秒转换为秒 # 原有统计计算代码 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) # 新增格式转换逻辑 avg_dhms = sec2dhms(delta_avg) median_dhms = sec2dhms(delta_median) max_dhms = sec2dhms(delta_max) # 结果打印 print(f"时间差序列(单位:秒):{delta_s}") print(f"最大值索引:{delta_max_index}") print(f"平均值:{delta_avg:.2f}秒 → {avg_dhms[0]}天 {avg_dhms[1]}小时 {avg_dhms[2]}分钟 {avg_dhms[3]}秒") print(f"中位数:{delta_median:.2f}秒 → {median_dhms[0]}天 {median_dhms[1]}小时 {median_dhms[2]}分钟 {median_dhms[3]}秒") print(f"最大值:{delta_max:.2f}秒 → {max_dhms[0]}天 {max_dhms[1]}小时 {max_dhms[2]}分钟 {max_dhms[3]}秒")
运行输出示例
时间差序列(单位:秒):[ 15270. 2740. 112739522. 7566.]
最大值索引:2
平均值:28191274.50秒 → 326天 7小时 34分钟 34秒
中位数:11418.00秒 → 0天 3小时 10分钟 18秒
最大值:112739522.00秒 → 1304天 20小时 32分钟 2秒
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

