Numpy中的时间戳

问题描述

我正在尝试使用wrf-python从netcdf文件提取数据。该数据是每小时的数据。日期将被提取为数字,而不是日历日期时间。首先,我提取数据,将其转换为平面np数组,然后尝试保存文件。格式另存为'%s'

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

它看起来像这样:

it looks like this

但它需要看起来像这样:

but it needs to look like this

谢谢

解决方法

按照惯例,日期通常存储为offset in seconds from Jan 1,1970

对于转换秒数的情况,此答案Python Numpy Loadtxt - Convert unix timestamp建议通过更改其数据类型来进行转换(应该尽可能有效,因为它可以绕过逐行循环,复制数据等)

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