在netCDF和python的某个坐标上读取随时间变化的值

时间:2015-03-03 13:21:38

标签: python netcdf

我有一个带网格的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显示是某个坐标上的时间值。

我是如何实现这一目标的?

谢谢!

1 个答案:

答案 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.wherelat数组的坐标索引。

lon