diff options
author | Julian Taylor <juliantaylor108@gmail.com> | 2016-01-17 13:04:24 +0100 |
---|---|---|
committer | Julian Taylor <juliantaylor108@gmail.com> | 2016-01-17 13:04:24 +0100 |
commit | 28fdcf3f19d2986a6760f96a53afa694abc737da (patch) | |
tree | cfe2ec67296d69cbd1d62365ffc5a47b89ab9934 /numpy/lib/tests/test_nanfunctions.py | |
parent | afd11746fc4e0f0c06c6331798bf66520183de4d (diff) | |
parent | 6e699948c2b6098ec1a6e135241bc24e4df9a4d1 (diff) | |
download | numpy-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.py | 26 |
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() |