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)]
明日任务
现在就剩下我明天去写循环输出啦