Zeitstempel in Numpy

Nov 07 2020

Ich versuche, mit wrf-python Daten aus einer netcdf-Datei zu extrahieren. Die Daten sind für jede Stunde. Das Datum wird als Zahl und nicht als Kalenderdatum extrahiert. Zuerst extrahiere ich die Daten, konvertiere sie in ein flaches np-Array und versuche dann, die Datei zu speichern. Das Format wird als '% s' gespeichert.

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

es sieht aus wie das:

aber es muss so aussehen:

Vielen Dank

Antworten

ti7 Nov 07 2020 at 13:53

Konventionell werden Daten ab dem 1. Januar 1970 häufig als Versatz in Sekunden gespeichert

Für die Konvertierung von Sekunden schlägt diese Antwort Python Numpy Loadtxt - Konvertieren des Unix-Zeitstempels vor, sie durch Ändern ihres Datentyps zu konvertieren (sollte so effizient wie möglich sein, da es zeilenweisen Schleifen, Kopieren von Daten usw. ausweicht).

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

Der E+18Postfix impliziert jedoch, dass Ihre Zeitstempel, wenn Sie wirklich ein Datum haben, in Nanosekunden angegeben sind und datetime64[ns]möglicherweise für Sie funktionieren

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