将dd,mm,yy数组转换为numpy日期时间

时间:2020-11-12 14:38:23

标签: python numpy

我正在尝试将YY,MM,DD值的单独数组转换为numpy datetime64数组。这是代码

import numpy as np

iyy = [2020, 2020, 2019, 2018, 2017]
imm = [2, 4, 4, 6, 8]
idd = [1, 2, 3, 4, 5]

isod = []
for y, m, d in zip(iyy, imm, idd):
    isod.append("%4d-%02d-%02d" % (y, m, d))

t1 = np.datetime64(np.asarray(isod))

这将显示错误Could not convert object to NumPy datetime。将不胜感激任何建议,以实现这一目标。预先感谢

2 个答案:

答案 0 :(得分:0)

您可以按列表理解方式转换为numpy.datetime64,然后从该列表中创建一个numpy.array

>>> np.array([np.datetime64('{:04d}-{:02d}-{:02d}'.format(y, m, d)) for y, m, d in zip(iyy, imm, idd)])
array(['2020-02-01', '2020-04-02', '2019-04-03', '2018-06-04', '2017-08-05'],
      dtype='datetime64[D]')

答案 1 :(得分:0)

更改

np.datetime64(np.asarray(isod))

np.asarray(isod).astype(np.datetime64)

完整代码:

Try it online!

import numpy as np

iyy = [2020, 2020, 2019, 2018, 2017]
imm = [2, 4, 4, 6, 8]
idd = [1, 2, 3, 4, 5]

isod = []
for y, m, d in zip(iyy, imm, idd):
    isod.append("%4d-%02d-%02d" % (y, m, d))

t1 = np.asarray(isod).astype(np.datetime64)
print(t1)

输出:

['2020-02-01' '2020-04-02' '2019-04-03' '2018-06-04' '2017-08-05']