我有一个带网格的netCDF文件(每步0.25°)。 在过去的50年里,我想要的是变量的值,比如tempMax,在某个网格点。
我知道你像这样把数据读入python
lon = numpy.array(file.variables['longitude'][:])
lat = numpy.array(file.variables['latitude'][:])
temp = numpy.array(file.variables['tempMax'][:])
time = numpy.array(file.variables['time'][:])
这给了我一个阵列,我不知道如何“解开”它。 如何在整个时间(存储在临时文件中)获取某个坐标(存储在临时文件中)的值? S显示是某个坐标上的时间值。
我是如何实现这一目标的?
谢谢!
答案 0 :(得分:4)
我猜测tempMax
是3D(时间x纬度x lon),然后应该作为
temp = ncfile.variables['tempMAx'][:,:,:]
(注意两件事:(1)如果您使用的是Python v2,最好避免使用file
这个词,而是使用ncfile
之类的内容,如上所示,(2){{1只需上面的调用就会自动存储为temp
,在读入变量时不需要使用numpy.ndarray
命令。)
现在,您可以使用
在特定位置随时提取温度numpy.array()
其中temp_crd = temp[:,lat_idx,lon_idx]
和lat_idx
是与纬度和经度坐标的索引相对应的整数。如果您事先知道这些指数,那就很好,只需插入它们,例如lon_idx
。 (您可以使用工具temp_crd = temp[:,25,30]
查看netCDF文件的内容https://www.unidata.ucar.edu/software/netcdf/docs/netcdf/ncdump.html)
更可能的情况是你事先知道坐标,但不知道它们的指数。假设您希望温度为50N和270E。您可以使用ncdump
函数提取已经读过的numpy.where
和lat
数组的坐标索引。
lon