这是一个与this question相关的后续问题。在
多亏了先前的帮助,我成功地导入了一个netCDF文件(或具有MFdataset的文件),并且能够将不同的时间相互比较以创建另一个累积数据集。这是一段当前的代码。在
from numpy import *
import netCDF4
import os
f = netCDF4.MFDataset('air.2m.1979.nc')
atemp = f.variables['air']
ntimes, ny, nx = atemp.shape
cold_days = zeros((ntimes, ny, nx), dtype=int)
for i in range(ntimes):
for b in range(ny):
for c in range(nx):
if i == 1:
if atemp[i,b,c] < 0:
cold_days[i,b,c] = 1
else:
cold_days[i,b,c] = 0
else:
if atemp[i,b,c] < 0:
cold_days[i,b,c] = cold_days[i-1,b,c] + 1
else:
cold_days[i,b,c] = 0
这似乎是一种蛮力的方法来完成这项工作,虽然它有效,但它需要很长的时间。我不确定这是否需要这么长时间,因为我处理的是365 349x277矩阵(35285645像素),还是与一些内置的python方法相比,我的老派暴力方法简单地慢了下来。在
下面是一个我相信代码正在做什么的例子。如果temp<;0,它会查看时间并增加寒冷天数。如果temp>;=0,则cold days重置为0。在下图中,您将看到,第2行第1列的单元格每次通过时都会增加,但第2行第2列的单元格在时间1时递增,但在时间2时重置为零。在
有没有更有效的方法来翻阅这个netCDF数据集来执行这种类型的操作?
似乎这只是一个小小的修改,只是在每个时间点把数据写出来。与此类似的东西应该会起作用:
相关问题 更多 >
编程相关推荐