summaryrefslogtreecommitdiff
path: root/numpy/lib/tests/test_nanfunctions.py
diff options
context:
space:
mode:
authorJulian Taylor <juliantaylor108@gmail.com>2016-01-17 13:04:24 +0100
committerJulian Taylor <juliantaylor108@gmail.com>2016-01-17 13:04:24 +0100
commit28fdcf3f19d2986a6760f96a53afa694abc737da (patch)
treecfe2ec67296d69cbd1d62365ffc5a47b89ab9934 /numpy/lib/tests/test_nanfunctions.py
parentafd11746fc4e0f0c06c6331798bf66520183de4d (diff)
parent6e699948c2b6098ec1a6e135241bc24e4df9a4d1 (diff)
downloadnumpy-28fdcf3f19d2986a6760f96a53afa694abc737da.tar.gz
Merge pull request #5981 from dfreese/fix/multi_percent_nanperc_bug
BUG: Handle multiple percentiles for all-nan slices in nanpercentile
Diffstat (limited to 'numpy/lib/tests/test_nanfunctions.py')
-rw-r--r--numpy/lib/tests/test_nanfunctions.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/numpy/lib/tests/test_nanfunctions.py b/numpy/lib/tests/test_nanfunctions.py
index dafc194eb..ac88c4ea5 100644
--- a/numpy/lib/tests/test_nanfunctions.py
+++ b/numpy/lib/tests/test_nanfunctions.py
@@ -655,7 +655,8 @@ class TestNanFunctions_Percentile(TestCase):
tgt = [np.percentile(d, 28) for d in _rdat]
res = np.nanpercentile(_ndat, 28, axis=1)
assert_almost_equal(res, tgt)
- tgt = [np.percentile(d, (28, 98)) for d in _rdat]
+ # Transpose the array to fit the output convention of numpy.percentile
+ tgt = np.transpose([np.percentile(d, (28, 98)) for d in _rdat])
res = np.nanpercentile(_ndat, (28, 98), axis=1)
assert_almost_equal(res, tgt)
@@ -703,6 +704,29 @@ class TestNanFunctions_Percentile(TestCase):
assert_raises(IndexError, np.nanpercentile, d, q=5, axis=(0, 4))
assert_raises(ValueError, np.nanpercentile, d, q=5, axis=(1, 1))
+ def test_multiple_percentiles(self):
+ perc = [50, 100]
+ mat = np.ones((4, 3))
+ nan_mat = np.nan * mat
+ # For checking consistency in higher dimensional case
+ large_mat = np.ones((3, 4, 5))
+ large_mat[:, 0:2:4, :] = 0
+ large_mat[:, :, 3:] = 2*large_mat[:, :, 3:]
+ for axis in [None, 0, 1]:
+ for keepdim in [False, True]:
+ with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter('always')
+ val = np.percentile(mat, perc, axis=axis, keepdims=keepdim)
+ nan_val = np.nanpercentile(nan_mat, perc, axis=axis,
+ keepdims=keepdim)
+ assert_equal(nan_val.shape, val.shape)
+
+ val = np.percentile(large_mat, perc, axis=axis,
+ keepdims=keepdim)
+ nan_val = np.nanpercentile(large_mat, perc, axis=axis,
+ keepdims=keepdim)
+ assert_equal(nan_val, val)
+
if __name__ == "__main__":
run_module_suite()