NC文件里的时间理解以及获取其表示

1.基础知识了解

xswl,我一开始也错了,我去计算年份的时候只除了365天,没有去除每天的24小时。还在那里逼逼叨叨的说这个很奇怪啊…好尴尬啊

import netCDF4
import netCDF4 as nc

file = ('data/ocean_waves_nomask_0.5_1979_2019.nc')
a = nc.Dataset(file)
lsm = file.variables['time']

print(time)
'int32 time(time)
    units: hours since 1900-01-01 00:00:00.0
    long_name: time
    calendar: gregorian
unlimited dimensions: 
current shape = (492,)
filling on, default _FillValue of -2147483647 used'

print(a.variables['time'][:]) #输出时间的值
'''
[ 692496  693240  693912  694656  695376  696120  696840  697584  698328
  699048  699792  700512  701256  702000  702696  703440  704160  704904
  705624  706368  707112  707832  708576  709296  710040  710784  711456
  712200  712920  713664  714384  715128  715872  716592  717336  718056
  718800  719544  720216  720960  721680  722424  723144  723888  724632
  725352  726096  726816  727560  728304  728976  729720  730440  731184
  731904  732648  733392  734112  734856  735576  736320  737064  737760
  738504  739224  739968  740688  741432  742176  742896  743640  744360
  745104  745848  746520  747264  747984  748728  749448  750192  750936
  751656  752400  753120  753864  754608  755280  756024  756744  757488
  758208  758952  759696  760416  761160  761880  762624  763368  764040
  764784  765504  766248  766968  767712  768456  769176  769920  770640
  771384  772128  772824  773568  774288  775032  775752  776496  777240
  777960  778704  779424  780168  780912  781584  782328  783048  783792
  784512  785256  786000  786720  787464  788184  788928  789672  790344
  791088  791808  792552  793272  794016  794760  795480  796224  796944
  797688  798432  799104  799848  800568  801312  802032  802776  803520
  804240  804984  805704  806448  807192  807888  808632  809352  810096
  810816  811560  812304  813024  813768  814488  815232  815976  816648
  817392  818112  818856  819576  820320  821064  821784  822528  823248
  823992  824736  825408  826152  826872  827616  828336  829080  829824
  830544  831288  832008  832752  833496  834168  834912  835632  836376
  837096  837840  838584  839304  840048  840768  841512  842256  842952
  843696  844416  845160  845880  846624  847368  848088  848832  849552
  850296  851040  851712  852456  853176  853920  854640  855384  856128
  856848  857592  858312  859056  859800  860472  861216  861936  862680
  863400  864144  864888  865608  866352  867072  867816  868560  869232
  869976  870696  871440  872160  872904  873648  874368  875112  875832
  876576  877320  878016  878760  879480  880224  880944  881688  882432
  883152  883896  884616  885360  886104  886776  887520  888240  888984
  889704  890448  891192  891912  892656  893376  894120  894864  895536
  896280  897000  897744  898464  899208  899952  900672  901416  902136
  902880  903624  904296  905040  905760  906504  907224  907968  908712
  909432  910176  910896  911640  912384  913080  913824  914544  915288
  916008  916752  917496  918216  918960  919680  920424  921168  921840
  922584  923304  924048  924768  925512  926256  926976  927720  928440
  929184  929928  930600  931344  932064  932808  933528  934272  935016
  935736  936480  937200  937944  938688  939360  940104  940824  941568
  942288  943032  943776  944496  945240  945960  946704  947448  948144
  948888  949608  950352  951072  951816  952560  953280  954024  954744
  955488  956232  956904  957648  958368  959112  959832  960576  961320
  962040  962784  963504  964248  964992  965664  966408  967128  967872
  968592  969336  970080  970800  971544  972264  973008  973752  974424
  975168  975888  976632  977352  978096  978840  979560  980304  981024
  981768  982512  983208  983952  984672  985416  986136  986880  987624
  988344  989088  989808  990552  991296  991968  992712  993432  994176
  994896  995640  996384  997104  997848  998568  999312 1000056 1000728
 1001472 1002192 1002936 1003656 1004400 1005144 1005864 1006608 1007328
 1008072 1008816 1009488 1010232 1010952 1011696 1012416 1013160 1013904
 1014624 1015368 1016088 1016832 1017576 1018272 1019016 1019736 1020480
 1021200 1021944 1022688 1023408 1024152 1024872 1025616 1026360 1027032
 1027776 1028496 1029240 1029960 1030704 1031448 1032168 1032912 1033632
 1034376 1035120 1035792 1036536 1037256 1038000 1038720 1039464 1040208
 1040928 1041672 1042392 1043136 1043880 1044552 1045296 1046016 1046760
 1047480 1048224 1048968 1049688 1050432 1051152]
'''

units为hours since 1900-01-01 00:00:0.0
它的意思是说,这些数字是从1900年1月1日00:00:00作为起始时间以小时作为计数单位累加的结果

1051152的意思是从1800年1月1日00:00:00开始计时的第1051152小时

2.换算时间

我找到的所有资料去换算这个时间,大家都是提供这句代码给我。我记得我11月份的时候是可以正常使用的,但是这次我就有bug了

第一种方法

time=a.variables['time'][:]
real_time = netCDF4.num2date(time,time.units)
print(real_time)

出现:AttributeError: 'numpy.ndarray' object has no attribute 'units'
他说我的time没有units怎么可能呢?所以一定是我没用对我的time,果然,改一下就好啦

time=a.variables['time']
real_time = netCDF4.num2date(time,time.units)
print(real_time)

 cftime.DatetimeGregorian(2019, 11, 1, 0, 0, 0, 0, has_year_zero=False)
 cftime.DatetimeGregorian(2019, 12, 1, 0, 0, 0, 0, has_year_zero=False)]

另一种方法

l_ds = {}
l_ds['Time'] = netCDF4.num2date(a.variables['time'][:], a.variables['time'].units)
print(l_ds)
                   cftime.DatetimeGregorian(2019, 11, 1, 0, 0, 0, 0, has_year_zero=False),
                   cftime.DatetimeGregorian(2019, 12, 1, 0, 0, 0, 0, has_year_zero=False)]

明日任务

现在就剩下我明天去写循环输出啦

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值