Numpyのタイムスタンプ

Nov 07 2020

wrf-pythonを使用してnetcdfファイルからデータを抽出しようとしています。データは1時間ごとのものです。日付は、カレンダーの日時ではなく、数値として抽出されています。最初にデータを抽出し、それをフラットnp配列に変換してから、ファイルを保存しようとします。フォーマットは '%s'として保存されます

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

次のようになります。

しかし、それは次のように見える必要があります:

ありがとう

回答

ti7 Nov 07 2020 at 13:53

慣例により、日付は1970年1月1日からの秒単位のオフセットとして保存されることがよくあります。

秒を変換する場合、この回答Python Numpy Loadtxt-UNIXタイムスタンプの変換は、データ型を変更して変換することを提案します(行ごとのループを回避したり、データをコピーしたりするので、できるだけ効率的である必要があります)。

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

ただし、E+18接尾辞は、実際に日付がある場合、タイムスタンプはナノ秒単位であるため、機能するdatetime64[ns]可能性があることを意味します。

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