使用 python 从 netCDF 的某个坐标处随时间读取值
Read value over time at certain coordinate from netCDF with python
我有一个带网格的 netCDF 文件(每步 0.25°)。
我想要的是变量的值,比如说 tempMax,在过去 50 年的某个网格点。
我知道您是这样将数据读入 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'][:])
这给我留下了一个数组,但我不知道如何 "untangle" 它。
如何获取整个时间(存储在时间中)的某个坐标(存储在温度中)的值?
S显示的是某坐标随时间变化的值。
有什么想法可以实现吗?
谢谢!
我猜 tempMax
是 3D(时间 x 纬度 x 经度),然后应该读入
temp = ncfile.variables['tempMAx'][:,:,:]
(注意两点:(1) 如果您使用的是 Python v2,最好避免使用 file
一词,而是使用 ncfile
之类的词,如上所示, (2)temp
会自动存储为numpy.ndarray
,只要调用上面的方法即可,读入变量时不需要使用numpy.array()
命令。)
现在您可以使用
提取特定位置所有时间的温度
temp_crd = temp[:,lat_idx,lon_idx]
其中lat_idx
和lon_idx
是对应经纬度坐标索引的整数。如果您事先知道这些索引,很好,只需插入它们,例如temp_crd = temp[:,25,30]
。 (可以使用工具ncdump
查看netCDF文件的内容,https://www.unidata.ucar.edu/software/netcdf/docs/netcdf/ncdump.html)
更有可能的情况是您知道坐标,但事先不知道它们的索引。假设您需要 50N 和 270E 的温度。您可以使用 numpy.where
函数提取您已经读入的 lat
和 lon
数组的坐标索引。
lat_idx = numpy.where(lat==50)[0][0]
lon_idx = numpy.where(lon==270)[0][0]
tmp_crd = temp[:,lat_idx,lon_idx]
我有一个带网格的 netCDF 文件(每步 0.25°)。 我想要的是变量的值,比如说 tempMax,在过去 50 年的某个网格点。
我知道您是这样将数据读入 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'][:])
这给我留下了一个数组,但我不知道如何 "untangle" 它。 如何获取整个时间(存储在时间中)的某个坐标(存储在温度中)的值? S显示的是某坐标随时间变化的值。
有什么想法可以实现吗?
谢谢!
我猜 tempMax
是 3D(时间 x 纬度 x 经度),然后应该读入
temp = ncfile.variables['tempMAx'][:,:,:]
(注意两点:(1) 如果您使用的是 Python v2,最好避免使用 file
一词,而是使用 ncfile
之类的词,如上所示, (2)temp
会自动存储为numpy.ndarray
,只要调用上面的方法即可,读入变量时不需要使用numpy.array()
命令。)
现在您可以使用
提取特定位置所有时间的温度temp_crd = temp[:,lat_idx,lon_idx]
其中lat_idx
和lon_idx
是对应经纬度坐标索引的整数。如果您事先知道这些索引,很好,只需插入它们,例如temp_crd = temp[:,25,30]
。 (可以使用工具ncdump
查看netCDF文件的内容,https://www.unidata.ucar.edu/software/netcdf/docs/netcdf/ncdump.html)
更有可能的情况是您知道坐标,但事先不知道它们的索引。假设您需要 50N 和 270E 的温度。您可以使用 numpy.where
函数提取您已经读入的 lat
和 lon
数组的坐标索引。
lat_idx = numpy.where(lat==50)[0][0]
lon_idx = numpy.where(lon==270)[0][0]
tmp_crd = temp[:,lat_idx,lon_idx]