Timestamp in Numpy

Nov 07 2020

Sto cercando di estrarre i dati da un file netcdf usando wrf-python. I dati sono per ogni ora. La data viene estratta come numero e non come data-ora del calendario. Per prima cosa estraggo i dati, li converto in un array np piatto, quindi provo a salvare il file. Il formatoèstato salvato come '% s'

np.savetxt((stn + 'WRF_T2_T10_WS_WD.csv'), np.transpose(arr2D), %s, delimiter=',', header=headers, comments='')

assomiglia a questo:

ma deve assomigliare a questo:

Grazie

Risposte

ti7 Nov 07 2020 at 13:53

Per convenzione, le date vengono spesso memorizzate come offset in secondi dal 1 gennaio 1970

Per il caso di conversione dei secondi, questa risposta Python Numpy Loadtxt - Converti unix timestamp suggerisce di convertirli cambiando il loro tipo di dati (dovrebbe essere il più efficiente possibile in quanto schiva i loop per riga, copia i dati, ecc.)

x = np.asarray(x, dtype='datetime64[s]')

Tuttavia, il E+18suffisso implica che se hai davvero una data, i tuoi timestamp sono in nanosecondi, quindi datetime64[ns]potrebbe funzionare per te

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]')