Timestamp em Numpy

Nov 07 2020

Estou tentando extrair dados de um arquivo netcdf usando wrf-python. Os dados são para cada hora. A data está sendo extraída como um número e não como uma data-hora do calendário. Primeiro, extraio os dados, converto-os em um array np simples e tento salvar o arquivo. O formato é salvo como '% s'

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

Se parece com isso:

mas precisa ser assim:

obrigado

Respostas

ti7 Nov 07 2020 at 13:53

Por convenção, as datas são frequentemente armazenadas como um deslocamento em segundos a partir de 1º de janeiro de 1970

Para o caso de conversão de segundos, esta resposta Python Numpy Loadtxt - Converter data e hora unix sugere convertê-los alterando seu tipo de dados (deve ser o mais eficiente possível, pois evita loops por linha, copia dados, etc.)

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

No entanto, o E+18postfix implica que se você realmente tem uma data, seus carimbos de data / hora estão em nanossegundos, então datetime64[ns]podem funcionar para você

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