问题描述
我正在尝试使用wrf-python从netcdf文件中提取数据。该数据是每小时的数据。日期将被提取为数字,而不是日历日期时间。首先,我提取数据,将其转换为平面np数组,然后尝试保存文件。格式另存为'%s'
np.savetxt((stn + 'WRF_T2_T10_WS_WD.csv'),np.transpose(arr2D),%s,delimiter=',',header=headers,comments='')
它看起来像这样:
但它需要看起来像这样:
谢谢
解决方法
按照惯例,日期通常存储为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]')