2017-10-31 1 views
0

Ich habe eine Codezeile (unten), die eine UTC-Zeit in lokale Solarzeit (LST) (beide Datetime-Objekte) konvertiert, mit Timedelta.Verwendung von datetime timedelta mit numpy Array als Eingabe

time_lst = time_utc + timedelta(hours=lon*12/180) 

Die Formel erfordert die Länge (lon). Mein Problem ist, dass lon ein numpy Array von float64 ist und das wird derzeit nicht mit der Methode timedelta funktionieren. Wie kann ich mein 'lon' Array mit timedelta arbeiten lassen?

+0

'(lon * 12/180) .astype ('timedelta64 [H]')' könnte die Arbeit tun – Eric

+0

Hm. (lon * 12/180) .astype ('timedelta64 [h]') gibt ein Array von 3s zurück, was so aussieht, als wären wir auf der richtigen Spur, wenn das 3 Stunden dauert. Aber ich bin mir nicht sicher, wo der Rest ist (also die Bruchstunde oder Minuten.) – InitialConditions

+0

Eigentlich bin ich mir nicht sicher, was passiert, weil (lon * 12/180) .astype ('timedelta64 [s]') gibt selbe Ausgabe wie (lon * 12/180) .astype ('timedelta64 [h]') ... – InitialConditions

Antwort

0

Dies wird eine timedelta64[s] entsprechend der richtigen Anzahl von Stunden berechnen. Sie können eine kleinere Zeiteinheit als s verwenden, wenn Sie mehr Präzision wünschen.

timediff = lon*12/180 * np.timedelta64(1, 'h').astype('timedelta64[s]') 
Verwandte Themen