Marca de tiempo en Numpy

Nov 07 2020

Estoy tratando de extraer datos de un archivo netcdf usando wrf-python. Los datos son para cada hora. La fecha se extrae como un número y no como un calendario-fecha-hora. Primero extraigo los datos, los convierto en una matriz plana np y luego trato de guardar el archivo. El formato se guarda como '% s'

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

se parece a esto:

pero debe verse así:

Gracias

Respuestas

ti7 Nov 07 2020 at 13:53

Por convención, las fechas se almacenan frecuentemente como un desplazamiento en segundos desde el 1 de enero de 1970

Para el caso de convertir segundos, esta respuesta Python Numpy Loadtxt - Convertir marca de tiempo unix sugiere convertirlos cambiando su tipo de datos (debería ser lo más eficiente posible ya que esquiva bucles por fila, copia datos, etc.)

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

Sin embargo, el E+18sufijo implica que si realmente tiene una fecha, sus marcas de tiempo están en nanosegundos, por lo que datetime64[ns]pueden funcionar para usted.

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