将整数数组转换为日期对象
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')
我有一个整数数组纪元时间,我想将其转换为日期类型对象:
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')