Skip to content

Commit 992ac21

Browse files
committed
Begin work on 1->ND interpolation
Solves #3252
1 parent 3f1b879 commit 992ac21

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

xarray/tests/test_interp.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,3 +662,53 @@ def test_datetime_interp_noerror():
662662
coords={"time": pd.date_range("01-01-2001", periods=50, freq="H")},
663663
)
664664
a.interp(x=xi, time=xi.time) # should not raise an error
665+
666+
667+
def interp_1d(data, dim, vals):
668+
selectors = {dim: vals}
669+
670+
old_coord = data[dim]
671+
672+
lower = data.sel(**selectors, method='ffill').drop(dim)
673+
upper = data.sel(**selectors, method='bfill').drop(dim)
674+
lower_x = data[dim].sel(**selectors, method='ffill').drop(dim)
675+
upper_x = data[dim].sel(**selectors, method='bfill').drop(dim)
676+
677+
new_x = lower[dim]
678+
weight = np.abs(new_x - lower_x)/np.abs(upper_x-lower_x)
679+
ans = lower * (1-weight) + upper * weight
680+
return ans
681+
682+
683+
@pytest.mark.parametrize('dim',[
684+
'x', 'y'
685+
])
686+
def test_new_interp(dim):
687+
688+
data = xr.DataArray(np.arange(10), dims=[dim]).assign_coords({dim: np.arange(10)})
689+
new_x = np.arange(9) + .5
690+
ans = interp_1d(data, dim, new_x)
691+
np.testing.assert_allclose(new_x, ans.values)
692+
693+
694+
def test_interp_1d_nd_targ():
695+
696+
data = xr.DataArray(np.arange(10), dims=['x'], coords={'x': np.arange(10)})
697+
new_x_2d = xr.DataArray(np.tile(np.r_[:10], (3, 1)), dims=['y', 'x'])
698+
ans = interp_1d(data, 'x', new_x_2d)
699+
np.testing.assert_allclose(new_x_2d, ans.values)
700+
701+
702+
def test_sel_nd():
703+
npdata = np.tile(np.arange(10), (5, 1))
704+
data = xr.DataArray(npdata, dims=['y', 'x'],
705+
coords={'x': np.r_[:10], 'y': np.r_[:5]})
706+
idx = xr.DataArray(npdata, dims=['z', 'x'])
707+
708+
ans = data.sel(x=idx, method='bfill')
709+
assert set(ans.dims) == {'z', 'y', 'x'}
710+
print(ans)
711+
712+
713+
714+

0 commit comments

Comments
 (0)