将整数数组转换为日期对象

Convert an Array of Integer to Date-Objects

我有一个整数数组纪元时间,我想将其转换为日期类型对象:

masked_array(data=[3.61463040e+09, 3.61463042e+09, 3.61463043e+09, ...,
               3.61471677e+09, 3.61471678e+09, 3.61471680e+09],
         mask=False,
   fill_value=1e+20)

我有以下代码应该遍历数组并将每个数字转换为日期对象并保存到 .csv 文件中:

timestamp = d.variables['time'][:]
timestamp = timestamp.transpose()
for sublist in timestamp:
print([datetime.strptime(str(item), "%Y%m%d") for item in sublist])
np.savetxt("time.csv", timestamp)

当我 运行 执行此操作时,出现以下错误:

TypeError: 'numpy.float64' object is not iterable

有什么方法可以做到这一点吗?

假设您的输入数组包含自纪元时间戳以来的 POSIX 秒,您可以例如

from datetime import datetime, timezone
import numpy as np

times = np.ma.masked_array(data=[3.61463040e+09, 3.61463042e+09, 3.61463043e+09,
                                 3.61471677e+09, 3.61471678e+09, 3.61471680e+09],
                           mask=False, fill_value=1e+20)

timestr = np.array([datetime.fromtimestamp(t, tz=timezone.utc)
                    .strftime("%Y%m%d")
                    for t in times.data])
# timestr
# array(['20840717', '20840717', '20840717', '20840717', '20840717',
#        '20840718'], dtype='<U8')