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

如何将numpy数组中拆分的字符型时间转换为标准DateTime格式

问题描述

我有一组格式特殊的时间数据,以拆分的字符串形式存储,示例输出如下:

print(time)
print(time[0])
print(type(time[0]))
print(type(time[0][0]))

[['2' '0' '2' ... '3' '2' '3']
 ['2' '0' '2' ... '4' '2' '3']
 ['2' '0' '2' ... '5' '2' '4']
 ...
 ['2' '0' '2' ... '5' '2' '7']
 ['2' '0' '2' ... '6' '2' '6']
 ['2' '0' '2' ... '7' '2' '0']]
['2' '0' '2' '2' '0' '5' '2' '1' '0' '7' '1' '3' '2' '3']
<class 'numpy.ma.core.MaskedArray'>
<class 'numpy.str_'>

需要将数组的每一行转换为标准DateTime格式(例如把['2' '0' '2' '2' '0' '5' '2' '1' '0' '7' '1' '3' '2' '3']转为20220521-07:13:23),并处理所有行数据。

解决方案

遍历处理法

适合小数据量或需要逐行调试的场景:

import numpy as np
from datetime import datetime

# 示例数据
time_arr = np.ma.MaskedArray([
    ['2','0','2','2','0','5','2','1','0','7','1','3','2','3'],
    ['2','0','2','3','0','4','1','5','1','0','2','2','1','5']
])

formatted_times = []
for row in time_arr:
    # 拼接每行字符为完整时间字符串
    raw_time = ''.join(row)
    # 解析为datetime对象
    dt = datetime.strptime(raw_time, '%Y%m%d%H%M%S')
    # 格式化为目标样式
    formatted_times.append(dt.strftime('%Y%m%d-%H:%M:%S'))

print(formatted_times)
# 输出: ['20220521-07:13:23', '20230415-10:22:15']

矢量化处理法

适合大数据量,效率更高:

import numpy as np
from datetime import datetime

# 批量拼接每行字符
raw_time_strings = np.char.add.reduce(time_arr, axis=1)
# 批量转换为datetime对象
dt_objects = np.array([datetime.strptime(s, '%Y%m%d%H%M%S') for s in raw_time_strings])
# 批量格式化
formatted_times = np.array([dt.strftime('%Y%m%d-%H:%M:%S') for dt in dt_objects])

print(formatted_times)

核心步骤说明

  1. 拼接字符:通过''.join(row)或np.char.add.reduce把每行的单个字符元素合并为14位的时间字符串(格式为YYYYMMDDHHMMSS)
  2. 解析为datetime:用datetime.strptime将字符串转换为可操作的datetime对象
  3. 格式化输出:用strftime将datetime对象转为要求的YYYYMMDD-HH:MM:SS格式

内容的提问来源于stack exchange,提问作者Dong-gyun Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:36:21