Numpy'de zaman damgası

Nov 07 2020

Wrf-python kullanarak bir netcdf dosyasından veri çıkarmaya çalışıyorum. Veriler her saat içindir. Tarih, bir takvim-tarih-saat değil, bir sayı olarak çıkarılıyor. Önce verileri çıkarıyorum, düz bir np dizisine dönüştürüyorum, sonra dosyayı kaydetmeye çalışıyorum. Biçim "% s" olarak kaydedilir

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

şuna benziyor:

ama şöyle görünmesi gerekiyor:

Teşekkürler

Yanıtlar

ti7 Nov 07 2020 at 13:53

Kural olarak, tarihler genellikle 1 Ocak 1970'den saniyeler içinde bir fark olarak saklanır

Saniyelerin dönüştürülmesi durumunda, bu cevap Python Numpy Loadtxt - Unix zaman damgasını dönüştür, veri türlerini değiştirerek dönüştürmeyi önerir (mümkün olduğunca verimli olmalı, çünkü satır döngülerini, verileri kopyalamayı, vb.)

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

Bununla birlikte, E+18sonek, gerçekten bir tarihiniz varsa, zaman damgalarınızın nanosaniye cinsinden olduğunu ve bu nedenle datetime64[ns]sizin için çalışabileceğini ima eder.

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