html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/2605#issuecomment-562654929,https://api.github.com/repos/pydata/xarray/issues/2605,562654929,MDEyOklzc3VlQ29tbWVudDU2MjY1NDkyOQ==,32069530,2019-12-06T17:02:05Z,2019-12-06T17:02:05Z,NONE,"Ho, sorry... I just see the PR... ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,390774883 https://github.com/pydata/xarray/issues/2605#issuecomment-562652648,https://api.github.com/repos/pydata/xarray/issues/2605,562652648,MDEyOklzc3VlQ29tbWVudDU2MjY1MjY0OA==,32069530,2019-12-06T16:56:20Z,2019-12-06T16:56:20Z,NONE,"Hi, I was looking to some xarray padding function and get this issue. For the moment, I made a function of my own based on numpy.pad and xr.apply_ufunc When possible, it also pad associated coordinates. If it can be of any help here... Here it is: ``` def xpad(ds, dims={}): """""" Padding of xarray. Coordinate are linearly padded if original coordinates are evenly spaced. Otherwise, no new coordinates are affected to padded axis. Padded dimension is named with prefix 'padded_' Args: ds (xarray): xarray dims (dict): keys are dimensions along which to pad and values are padding tuple (see np.pad). (ex {'pulse:(10,0)}) Returns: (xarray) : same as input with padded axis. """""" mypad = [(0,0) for n in ds.dims if n not in dims.keys()] mypad+=list(dims.values()) padded_ds = xr.apply_ufunc(np.pad, ds, mypad,input_core_dims=[list(dims.keys()),[]], output_core_dims=[['padded_'+d for d in dims.keys()]], keep_attrs=True) for var, ext in dims.items(): dvar = np.diff(ds[var]) if np.allclose(dvar, dvar[0]): dvar = dvar[0] left_bound, right_bound = (np.min(ds[var]).data, np.max(ds[var]).data) if dvar>0. else (np.max(ds[var]).data, np.min(ds[var]).data) extended_var = np.append(ds[var].data, np.max(ds[var]).data+np.arange(1,ext[1]+1)*dvar) extended_var = np.append(np.min(ds[var]).data+np.arange(-ext[0],0)*dvar, extended_var) padded_ds = padded_ds.assign_coords(**{'padded_'+var:extended_var}) else: print('Coordinates {} are not evenly spaced, padding is impossible'.format(var)) return padded_ds ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,390774883