【发布时间】:2020-01-12 07:15:42
【问题描述】:
我有一个 3D 数组,其中包含基准日期(例如 01.01.2000)过去的天数。我对一年中的实际日期(DOY:1-365/366)感兴趣,而不是给定日期过去的总天数。
对于单个值,以下语法有效。例如,
import numpy as np
import datetime
data = 1595
date = datetime.datetime(2000,1,1,0,0) + datetime.timedelta(data -1)
date.timetuple().tm_yday
134
但是,我在使用 3D 数组时遇到了问题。
import numpy as np
import datetime
data = np.random.randint(5, size = (2,2,2))
data = data + 1595
data
array([[[1596, 1595],
[1599, 1599]],
[[1596, 1599],
[1595, 1595]]])
#Function
def Int_to_DOY(int_array):
date_ = datetime.datetime(2000,1,1,0,0) + datetime.timedelta(int_array - 1)
return date_.timetuple().tm_yday
doy_data = data * 0 #Empty array
for i in range(2):
doy_data[:, :, i] = Int_to_DOY(data[:, :, i])
这是错误消息,我无法弄清楚。
TypeError: unsupported type for timedelta days component: numpy.ndarray
感谢您的帮助。
【问题讨论】:
-
你能添加你的预期输出吗?
-
array([[[135, 134], [138, 138]], [[135, 138], [134, 134]]])
标签: python-3.x pandas numpy datetime timedelta