我从同事那里收到了一些数据文件(NetCDF),我试图将这些文件连接成一个文件,以便能够使用以前的一些脚本来运行它。问题是我收到的NetCDF文件的尺寸为“高度”,填充值为1e20。当我尝试对文件执行几乎所有xarray操作时,这会导致错误,因为尺寸坐标中存在重复的值。
以下是其中一个文件的信息(您可以在“高度”坐标的最终值中看到重复值):
<xarray.Dataset> Dimensions: (height: 1061)
Coordinates: * height (height) float64 0.0 10.0 20.0 30.0 ... 1e+20 1e+20 1e+20 1e+20
Data variables:
pres (height) float32 ...
tdry (height) float32 ...
rh (height) float32 ...
u_wind (height) float32 ...
v_wind (height) float32 ...
mr (height) float32 ...
theta (height) float32 ...
theta_e (height) float32 ...
theta_v (height) float32 ...
lat (height) float32 ...
lon (height) float32 ...
alt (height) float32 ...
wdir (height) float32 ...
我认为可能将索引重新索引为没有填充值的新索引可能会有所帮助,但是由于错误再次弹出,我也无法做到这一点:
ValueError: cannot reindex or align along dimension 'height' because the index has duplicate values
如果有人可以在这里帮助我,那将是一个好消息!我已经为此苦苦挣扎了一段时间,但是也许解决方案非常简单,并且我的初学者的身份在这里并没有帮助。 :/
答案 0 :(得分:0)
这不是python解决方案,但我想知道CDO或NCO是否可能无法帮助您更轻松/更快地解决此问题?
如果文件使用的时间不同,则可以尝试
cdo mergetime input_t*.nc output.nc
(*为通配符)
通常,您可以尝试使用以下方法整理文件:
cdo cat input_t*.nc output.nc
我不确定cdo如何处理丢失的高度坐标
您还可以使用
在nco中附加文件ncks -A appended_file.nc target_file.nc
不确定这些解决方案中的哪一个(如果有的话)会起作用,但我希望有人会有所帮助。
答案 1 :(得分:0)
如何按照this post中的建议删除重复的条目?
即使坐标具有重复的条目, .isel
方法也应该起作用。以下脚本可能有效
_, index = np.unique(ds['time'], return_index=True)
ds.isel(time=index)