尺寸坐标具有填充值,因此值重复

时间:2019-02-11 15:03:18

标签: python duplicates netcdf dimension python-xarray

我从同事那里收到了一些数据文件(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

如果有人可以在这里帮助我,那将是一个好消息!我已经为此苦苦挣扎了一段时间,但是也许解决方案非常简单,并且我的初学者的身份在这里并没有帮助。 :/

2 个答案:

答案 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)