Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d044142

Browse files
committed
Added numpy>=1.18 checks with LooseVersion
2 parents 6c07668 + 5daa841 commit d044142

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

doc/whats-new.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ Bug fixes
7474
- Fixed overflow issue causing incorrect results in computing means of :py:class:`cftime.datetime`
7575
arrays (:issue:`4341`). By `Spencer Clark <https://github.com/spencerkclark>`_.
7676
- Fix `KeyError` when doing linear interpolation to an nd `DataArray`
77-
that contains NaNs (:pull:`4233`).
77+
that contains NaNs (:pull:`4233`). Requires `numpy` version `1.18` or newer.
7878
By `Jens Svensmark <https://github.com/jenssss>`_
7979

8080

xarray/core/missing.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import datetime as dt
22
import warnings
3+
from distutils.version import LooseVersion
34
from functools import partial
45
from numbers import Number
56
from typing import Any, Callable, Dict, Hashable, Sequence, Union
@@ -551,8 +552,14 @@ def _localize(var, indexes_coords):
551552
indexes = {}
552553
for dim, [x, new_x] in indexes_coords.items():
553554
index = x.to_index()
554-
imin = index.get_loc(np.nanmin(new_x.values), method="nearest")
555-
imax = index.get_loc(np.nanmax(new_x.values), method="nearest")
555+
if LooseVersion(np.__version__) >= LooseVersion("1.18"):
556+
imin = index.get_loc(np.nanmin(new_x.values), method="nearest")
557+
imax = index.get_loc(np.nanmax(new_x.values), method="nearest")
558+
else:
559+
imin = index.get_loc(np.min(new_x.values), method="nearest")
560+
imax = index.get_loc(np.max(new_x.values), method="nearest")
561+
# imin=0
562+
# imax=0
556563

557564
indexes[dim] = slice(max(imin - 2, 0), imax + 2)
558565
indexes_coords[dim] = (x[indexes[dim]], new_x)

xarray/tests/test_interp.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import xarray as xr
88
from xarray.tests import (
9+
LooseVersion,
910
assert_allclose,
1011
assert_equal,
1112
assert_identical,
@@ -277,9 +278,13 @@ def test_interpolate_nd_nd():
277278
da.interp(a=ia)
278279

279280

281+
@pytest.mark.skipif(
282+
LooseVersion(np.__version__) < "1.18",
283+
reason="only in numpy>=1.18 does np.nanmin/max support np.datatime-dtype",
284+
)
280285
@requires_scipy
281286
def test_interpolate_nd_with_nan():
282-
"""Interpolate an array with an nd indexer."""
287+
"""Interpolate an array with an nd indexer and `NaN` values."""
283288

284289
# Create indexer into `a` with dimensions (y, x)
285290
x = [0, 1, 2]

0 commit comments

Comments
 (0)