如何从 NETcdf 时间维度(0 对应 jan)存储月份?
How to store months from NETcdf time dimension (0 corresponding to jan)?
我有一个 3d NETcdf 数据集,正在尝试使用降水量变量。我想绘制它 60 年来的月平均值,但很难生成与我之前没有涉及 for 循环的平均计算一致的图。以下是我如何存储一月、二月的值并取平均值:
janNES = np.empty_like(conprecip[0:720,6:-11,95:141])
for i in range(0,720,12):
janNES[i]=(NESprecip[i,6:-11,95:141])
mjanNES=(np.mean(janNES, axis=0))
febNES = np.empty_like(conprecip[0:720,6:-11,95:141])
for i in range(1,720,12):
febNES[i]=(NESprecip[i,6:-11,95:141])
mfebNES=(np.mean(febNES, axis=0))
#values that are plotted, monthly 60 year averages
np.mean(mjanNES-mjan)
np.mean(mfebNES-mfeb)
其中 0-11 是一月到十二月,所以我类似地存储其他月份的值。我认为我存储数据的方式有问题,因为在减去控件(mjan 和 mfeb,使用此方法存储)并再次取平均值后,它会产生奇怪的结果。感谢您的阅读和帮助。
你的 janNES
数组第一维的大小是 720,但是当你随着时间循环时:
for i in range(0,720,12):
janNES[i]=...
您只填充每 12 个 (0,12,24,...
) 项,但最后取整个数组的平均值。您可能希望将数组创建为:
janNES = np.empty_like(conprecip[0:720:12,6:-11,95:141])
然后循环遍历它,例如:
for ii,i in enumerate(range(0,720,12)):
janNES[ii]=(NESprecip[i,6:-11,95:141])
ii
现在从 0,1,2,..,59
运行,而 i
从 0,12,24,..,708
.
运行
顺便说一句,你不需要 for
循环,Numpy 可以 select 通过切片原始数组直接获取数据:
janNES = NESprecip[0:720:12, 6:-11, 95:141]
febNES = NESprecip[1:720:12, 6:-11, 95:141]
你甚至可以直接计算平均值:
mjanNES = NESprecip[0:720:12, 6:-11, 95:141].mean(axis=0)
我有一个 3d NETcdf 数据集,正在尝试使用降水量变量。我想绘制它 60 年来的月平均值,但很难生成与我之前没有涉及 for 循环的平均计算一致的图。以下是我如何存储一月、二月的值并取平均值:
janNES = np.empty_like(conprecip[0:720,6:-11,95:141])
for i in range(0,720,12):
janNES[i]=(NESprecip[i,6:-11,95:141])
mjanNES=(np.mean(janNES, axis=0))
febNES = np.empty_like(conprecip[0:720,6:-11,95:141])
for i in range(1,720,12):
febNES[i]=(NESprecip[i,6:-11,95:141])
mfebNES=(np.mean(febNES, axis=0))
#values that are plotted, monthly 60 year averages
np.mean(mjanNES-mjan)
np.mean(mfebNES-mfeb)
其中 0-11 是一月到十二月,所以我类似地存储其他月份的值。我认为我存储数据的方式有问题,因为在减去控件(mjan 和 mfeb,使用此方法存储)并再次取平均值后,它会产生奇怪的结果。感谢您的阅读和帮助。
你的 janNES
数组第一维的大小是 720,但是当你随着时间循环时:
for i in range(0,720,12):
janNES[i]=...
您只填充每 12 个 (0,12,24,...
) 项,但最后取整个数组的平均值。您可能希望将数组创建为:
janNES = np.empty_like(conprecip[0:720:12,6:-11,95:141])
然后循环遍历它,例如:
for ii,i in enumerate(range(0,720,12)):
janNES[ii]=(NESprecip[i,6:-11,95:141])
ii
现在从 0,1,2,..,59
运行,而 i
从 0,12,24,..,708
.
顺便说一句,你不需要 for
循环,Numpy 可以 select 通过切片原始数组直接获取数据:
janNES = NESprecip[0:720:12, 6:-11, 95:141]
febNES = NESprecip[1:720:12, 6:-11, 95:141]
你甚至可以直接计算平均值:
mjanNES = NESprecip[0:720:12, 6:-11, 95:141].mean(axis=0)