将numpy数组转换为日期时间列表

hm8*_*hm8 6 python arrays datetime numpy

我有一个2D形式的日期:

[Y Y Y ... ]
[M M M ... ]
[D D D ... ]
[H H H ... ]
[M M M ... ]
[S S S ... ]
Run Code Online (Sandbox Code Playgroud)

所以它看起来像

data = np.array([
    [2015, 2015, 2015, 2015, 2015, 2015], # ...
    [   1,    1,    1,    1,    1,    1],
    [   1,    1,    1,    2,    2,    2],
    [  23,   23,   23,    0,    0,    0],
    [   4,    5,    5,   37,   37,   37],
    [  59,    1,    2,   25,   27,   29]
])
Run Code Online (Sandbox Code Playgroud)

将此转换为一个datetime对象列表的最佳方法是什么?

Def*_*_Os 6

import datetime
import numpy as np

data = np.array(
    [[2015, 2015, 2015, 2015, 2015, 2015],
     [   1,    1,    1,    1,    1,    1],
     [   1,    1,    1,    2,    2,    2],
     [  23,   23,   23,    0,    0,    0],
     [   4,    5,    5,   37,   37,   37],
     [  59,    1,    2,   25,   27,   29]]
)

# Transpose the data so that columns become rows.
data = data.T

# A simple list comprehension does the trick, '*' making sure
# the values are unpacked for 'datetime.datetime'.
new_data = [datetime.datetime(*x) for x in data]

print(new_data)
Run Code Online (Sandbox Code Playgroud)

[datetime.datetime(2015, 1, 1, 23, 4, 59), datetime.datetime(2015, 1, 1, 23, 5, 1), datetime.datetime(2015, 1, 1, 23, 5, 2 ), datetime.datetime(2015, 1, 2, 0, 37, 25), datetime.datetime(2015, 1, 2, 0, 37, 27), datetime.datetime(2015, 1, 2, 0, 37, 29)]