Преобразование массива целых чисел в объекты даты - PullRequest
1 голос
/ 06 августа 2020

У меня есть массив целых чисел эпохи , который я хотел бы преобразовать в объекты типа даты:

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

Есть ли способ, которым я могу это сделать?

1 Ответ

1 голос
/ 07 августа 2020

при условии, что ваш входной массив содержит 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')
...