我有一个2 d xarray数据集和我有几个nan值的数据集。这些nan值需要充满最近的non-nan值的二维数组。我怎么做呢?
我试图让我的数据符合grid_spec文件读取的地球系统模型。的土地上有矛盾点是在迫使数据和grid_spec文件导致的爆炸模型。
江南体育网页版地球科学堆栈交换是一个问答网江南电子竞技平台站对于那些感兴趣的地质学、气象学、海洋学、环境科学。注册只需要一分钟。
报名加入这个社区我有一个2 d xarray数据集和我有几个nan值的数据集。这些nan值需要充满最近的non-nan值的二维数组。我怎么做呢?
我试图让我的数据符合grid_spec文件读取的地球系统模型。的土地上有矛盾点是在迫使数据和grid_spec文件导致的爆炸模型。
如果我是你,我就会排除NaN值,然后对结果执行网格间隔不规则数据。
在Python中已经有工具来执行这个SciPy和使用图书馆
https://scipy-cookbook.readthedocs.io/items/Matplotlib_Gridding_irregularly_spaced_data.html
但请文档一步你做什么和为什么。不包括数据总是……解释数据。
我能够通过以下功能
def fill_mismatch (ds_grid_spec ds_data): ds_data_o = ds_data.copy()数= 0.0我的范围(ds_grid_spec.shape [0]): j的范围(ds_grid_spec.shape[1]):如果ds_grid_spec (i, j)。值> 0.0,(不是ds_data (i, j) > 0.0):数=数+ 1.0 fill_miss2d (ds_data_o, i, j)如果ds_grid_spec (i, j)。值= = 0.0,(不是ds_data (i, j)。值= = 0.0):数=数+ 1.0 ds_data_o (i, j) = 0.0返回ds_data_o def fill_miss2d (ds, lat_i lon_j): #拳头循环周期= 1时真的:bl_i, bl_j = lat_i -周期,lon_j——周期tr_i tr_j = lat_i +循环,lon_j +周期#左下角我如果bl_i < 0: bl_i = 0 #左下角j如果bl_j < 0: bl_j = 0 #右上方我如果tr_i > ds.lat。形状[0]1:tr_i = ds.lat。形状[0]1 #如果tr_j > ds.lon右上方j。形状[0]1:tr_j = ds.lon。形状[0]1 lats_i = np.arange (bl_i, tr_i) lons_j = np.arange lats_i (lats_i_idx bl_j tr_j):在lons_j lons_j_idx:如果ds (lats_i_idx, lons_j_idx) > 0.0: ds [lat_i lon_j] = ds (lats_i_idx lons_j_idx]回报周期=周期+ 1
grid_spec(最常用的网格文件交换模块化海洋模型妈妈)有一个变量AREA_LND soiltype和文件。数控变量soiltype。这两个变量有0.0网格点归类为海洋。因此我们不需要使用fill_miss2d发生失配和海洋在哪里遇到grid_spec,但是土地是在soiltype。而我们直接填补soiltype网格点为0.0
可以找到完整的笔记本https://github.com/manmeet3591/python_class/blob/master/xarray_tutorial/grid_soiltype.ipynb