python - netcdf (.nc) 文件只有 -999 值?
问题描述
我正在尝试分析来自https://imdpune.gov.in/Clim_Pred_LRF_New/Grided_Data_Download.html的降雨数据,特别是“Gridded Rainfall (0.25 x 0.25) NetCDF”文件。
我曾经netCDF4
加载数据,但我得到了这个奇怪的结果:
from netCDF4 import Dataset
import numpy as np
path = '2013.nc'
f = Dataset(path ,'r')
rain = np.array(f.variables['RAINFALL'][:,:,:])
print(rain[0][0])
输出:
[-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999. -999.
-999. -999. -999.]
注意:这个特定文件没有问题,因为我每年的数据都得到相同的结果。你可以自己试试。
我在 python 中加载数据是否错误,我下载的数据有问题吗?和变量虽然没有给我这个latitude
问题longitude
解决方案
from pathlib import Path
import numpy as np
import matplotlib.pyplot as plt
# file import
path = Path('../../Downloads/')
file = 'Clim_Pred_LRF_New_RF25_IMD0p252013.nc'
f = Dataset(path / file, 'r')
# select variable "Rainfall"
rain = np.array(f.variables['RAINFALL'][:,:,:])
# assign NaN value
rain[rain==-999.] = np.nan
# plot dataset for selected date (2013-01-18)
plt.pcolormesh(rain[17])
plt.colorbar()
数据看起来不错。
但看看雨的形状:
print(rain.shape)
(365, 129, 135)
# --> (days, latitude, longitude).
随着rain[0][0]
您选择第一个时间步长 (Jan-01) 和第一个纬度 (6.5),这将返回一个具有 NaN 值的一维数组,因为所有像素都在印度之外。使用 0 选择第二维和第三维将始终仅返回带有 -999 的数组。你可以试试例如rain[17][100]
!
print(rain[17][100]
array([ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, 1.2962954 , 0.99620295, 2.705826 ,
9.772656 , 11.187045 , 0. , 3.0871496 , 5.298688 ,
18.108587 , 34.280876 , 35.034836 , 41.41929 , 38.952507 ,
63.49905 , 92.398125 , 92.92495 , 80.57031 , 63.660515 ,
45.413662 , nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan],
dtype=float32)
推荐阅读
- python - 在 Python 中创建指向 2D 字符数组的指针
- redis - 注册实现实例化或定义空构造函数的自定义序列化程序 - Wildfly 上的 Redis 缓存
- windows-10 - 带有跟踪标志的 IISExpress 不提供任何附加信息,并且仍然提示使用跟踪标志运行
- makefile - 如何在 makefile 中为 grep 命令添加引号?
- reactjs - Azure DevOps docker build 与本地构建产生不同的结果
- optimization - 约束规划与线性规划:解决方案的速度和质量
- c# - HttpContext.Current.Request.Files.Count 每次都返回 null。我想将文件上传到服务器中的文件夹
- flutter - Flutter 设计模式:有什么最值得推荐的吗?
- python - 如何抑制来自 jaydebeapi 罐子的日志
- javascript - 循环和测试正则表达式对象的最佳和最有效的方法是什么