我是xarray的新手,所以我想知道我是否做错了什么。为什么在将netcdf文件加载到xarray数据集中时,将NaN引入了维变量
我有一个包含三组netCDF文件(A,B,C)的每一个包含具有只是一个时间维度的若干变量以及一个相应的“time_dimension”变量。时间维度变量为其值使用Unix时间戳。
在下面我打开netCDF文件并打印出的时间戳的每个组的最小和最大的例子。这给了我预期的时间戳范围。
我然后从netCDF文件各组加载到使用open_dataset命令xarray数据集。对于这些数据集,我再次输出时间维坐标时间戳的最小值和最大值。最小值与直接读取netcdf文件得到的最小值相同,但最大值包含两个组(A和B)的NAN。
虽然我不在代码显示它时,NAN值都位于xarray变量值数组的末尾。另外,A组包含4个NAN值,而B组包含更多。另请注意,netcdf变量的大小与每个组的xarray变量相同。
有谁知道为什么NAN值被引入到我的时候,他们被导入到从的NetCDF xarray维坐标?
这是我用来演示问题
import xarray as XR
from netCDF4 import Dataset
Filename = r'C:\temp\My_data.nc'
#-------------- load netcdf data directly -----------
print('netcdf')
root = Dataset(Filename,'r',format='NETCDF4')
grp = root.groups['A']
dt = grp.variables['time_dimension'][:]
print('group A: ',min(dt), max(dt))
grp = root.groups['B']
dt = grp.variables['time_dimension'][:]
print('group B: ',min(dt), max(dt))
grp = root.groups['C']
dt = grp.variables['time_dimension'][:]
print('group C: ',min(dt), max(dt))
root.close()
print(' ')
print(' ')
#-------------- load netcdf data via xarray -----------
print('xarray loaded from netcdf')
ax = XR.open_dataset(Filename, group='A', decode_times=False)
dt = ax['time_dimension'].values
print('group A: ', min(dt), max(dt))
ax.close()
ax = XR.open_dataset(Filename, group='B', decode_times=False)
dt = ax['time_dimension'].values
print('group B: ', min(dt), max(dt))
ax.close()
ax = XR.open_dataset(Filename, group='C', decode_times=False)
dt = ax['time_dimension'].values
print('group C: ', min(dt), max(dt))
ax.close()
此代码被上面的代码
netcdf
group A: 1417532400.0 1480406400.0
group B: 1392129000.0 1439217000.0
group C: 1432913400.0 1436888700.0
xarray loaded from netcdf
group A: 1417532400.0 9.96920996839e+36
group B: 1392129000.0 9.96920996839e+36
group C: 1432913400.0 1436888700.0