Horodatage dans Numpy

Nov 07 2020

J'essaie d'extraire des données d'un fichier netcdf en utilisant wrf-python. Les données sont pour chaque heure. La date est extraite sous forme de nombre et non de calendrier-date-heure. J'extrais d'abord les données, je les convertis en un tableau np plat, puis j'essaye d'enregistrer le fichier. Le format est enregistré sous '% s'

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

ça ressemble à ça:

mais il doit ressembler à ceci:

Merci

Réponses

ti7 Nov 07 2020 at 13:53

Par convention, les dates sont fréquemment stockées sous forme de décalage en secondes à partir du 1er janvier 1970

Pour le cas de la conversion des secondes, cette réponse Python Numpy Loadtxt - Convertir un horodatage unix suggère de les convertir en modifiant leur type de données (devrait être aussi efficace que possible car il évite les boucles par ligne, copie des données, etc.)

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

Cependant, le E+18suffixe implique que si vous avez vraiment une date, vos horodatages sont en nanosecondes, donc cela datetime64[ns]peut fonctionner pour vous

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