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

如何将numpy浮点型数组转换为datetime数组?

将Numpy浮点数组的时间分量转为'%y/%m/%d %H:%M:%S'格式

这里提供两种可行的方案,分别基于Pandas(高效便捷)和纯Numpy+Python标准库(无额外依赖),处理你的浮点型时间数组:

方案一:使用Pandas快速转换

Pandas对时间序列的处理非常高效,适合批量转换:

import numpy as np
import pandas as pd

# 模拟你的输入数组
time_arr = np.array([
    [2013, 12, 3, 8.3478],
    [2013, 12, 3, 8.3480],
    [2013, 12, 3, 8.3482],
    [2013, 12, 3, 8.3488],
    [2013, 12, 3, 8.3490],
    [2013, 12, 3, 8.3492]
], dtype=np.float64)

# 转为DataFrame并指定列名
df = pd.DataFrame(time_arr, columns=["year", "month", "day", "hour"])

# 拆分小时列的时、分、秒
df["hour_int"] = df["hour"].astype(int)
df["minute_frac"] = (df["hour"] - df["hour_int"]) * 60
df["minute_int"] = df["minute_frac"].astype(int)
df["second"] = (df["minute_frac"] - df["minute_int"]) * 60

# 合并为datetime对象,再转成目标格式
df["datetime"] = pd.to_datetime(df[["year", "month", "day", "hour_int", "minute_int", "second"]])
formatted_dates = df["datetime"].dt.strftime("%y/%m/%d %H:%M:%S").tolist()

print(formatted_dates)

输出结果示例:

['13/12/03 08:20:52', '13/12/03 08:20:53', '13/12/03 08:20:54', '13/12/03 08:20:56', '13/12/03 08:20:57', '13/12/03 08:20:57']

方案二:纯Numpy+标准库实现(无第三方依赖)

如果不想引入Pandas,可以用循环结合datetime模块处理每一行:

import numpy as np
from datetime import datetime

time_arr = np.array([
    [2013, 12, 3, 8.3478],
    [2013, 12, 3, 8.3480],
    [2013, 12, 3, 8.3482],
    [2013, 12, 3, 8.3488],
    [2013, 12, 3, 8.3490],
    [2013, 12, 3, 8.3492]
], dtype=np.float64)

formatted_dates = []
for row in time_arr:
    year, month, day, hour = row
    # 拆分小时为时分秒
    hour_int = int(hour)
    minute_total = (hour - hour_int) * 60
    minute_int = int(minute_total)
    second = round((minute_total - minute_int) * 60)
    # 构造datetime并格式化
    dt = datetime(int(year), int(month), int(day), hour_int, minute_int, second)
    formatted_dates.append(dt.strftime("%y/%m/%d %H:%M:%S"))

print(formatted_dates)

注意事项

  • 浮点型小时转秒时可能存在精度误差,建议用round()取整,避免出现秒数为59.999999999的情况
  • 如果你的数组规模极大,Pandas方案的效率会远高于循环方案
  • 所有时间分量(年、月、日)需要确保是合法的日期值,否则pd.to_datetime或datetime会抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:25:59