Znacznik czasu w Numpy
Próbuję wyodrębnić dane z pliku netcdf za pomocą wrf-python. Dane dotyczą każdej godziny. Data jest wyodrębniana jako liczba, a nie kalendarz-data-godzina. Najpierw wyodrębniam dane, konwertuję je na płaską tablicę np, a następnie próbuję zapisać plik. Format jest zapisywany jako „% s”
np.savetxt((stn + 'WRF_T2_T10_WS_WD.csv'), np.transpose(arr2D), %s, delimiter=',', header=headers, comments='')
To wygląda tak:
ale musi wyglądać tak:
Dzięki
Odpowiedzi
Zgodnie z konwencją, daty są często przechowywane jako przesunięcie w sekundach od 1 stycznia 1970 r
W przypadku konwersji sekund ta odpowiedź Python Numpy Loadtxt - Convert unix timestamp sugeruje konwersję ich przez zmianę ich typu danych (powinno być tak wydajne, jak to tylko możliwe, ponieważ pozwala uniknąć pętli według wiersza, kopiowanie danych itp.)
x = np.asarray(x, dtype='datetime64[s]')
Jednak E+18przyrostek sugeruje, że jeśli naprawdę masz datę, Twoje znaczniki czasu są w nanosekundach, więc datetime64[ns]może działać dla Ciebie
import time
import numpy as np
>>> a = np.array([time.time() * 10**9]) # epoch seconds to ns
>>> a # example array
array([1.60473147e+18])
>>> a = np.asarray(a, dtype='datetime64[ns]')
>>> a
array(['2020-11-07T06:44:29.714103040'], dtype='datetime64[ns]')