【发布时间】:2018-09-14 09:18:45
【问题描述】:
假设有一个变量time,即
<class 'netCDF4._netCDF4.Variable'>
int32 time(time)
units: seconds since 1955-01-01
unlimited dimensions: time
current shape = (1464,)
filling off
我已经用 time = nc.num2date(time[:],time.units) 将其更改为日期时间。输出是
array([datetime.datetime(2012, 1, 1, 0, 0),
datetime.datetime(2012, 1, 1, 6, 0),
datetime.datetime(2012, 1, 1, 12, 0), ...,
datetime.datetime(2012, 12, 31, 6, 0),
datetime.datetime(2012, 12, 31, 12, 0),
datetime.datetime(2012, 12, 31, 18, 0)], dtype=object)
如果我想将日期时间分成两部分,即date == the current date as 8 digit integer (YYYYMMDD) 和datesec == seconds to complete current date。例如,
这个数组可以分成两个数组(date 和datesec)
date = array([20120101,20120101,20120101,20120101,
20120102,20120102,...])
datesec = array ([0,21600,43200,64800,
0,21600,43200,64800,
0, 21600,43200,......])
有没有有效的处理方法?
【问题讨论】:
-
列表理解+日期时间方法来获取年、月、日和秒。你尝试了什么?
-
datetime类型有方法date和time。我不知道您为什么要将日期转换为 8 位整数,而不是将它们保留为某种实际可用的日期,您可以对其进行算术运算(例如自纪元以来的儒略日)或有用的|S8字符串,但是这很容易用几行算术来完成,或者只做字符串并在上面调用int。有时,只需减去午夜并致电total_seconds。 -
datetime文档展示了如何提取这些部分并将它们组合成您想要的格式。你被困在哪里了?
标签: python arrays numpy datetime netcdf