summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2014-08-24 11:10:39 -0600
committerCharles Harris <charlesr.harris@gmail.com>2014-08-24 11:10:39 -0600
commit14e4cc3aa8bc6e01d6494860c7de6bf9ec0ab86b (patch)
treea9a9dedeb9aa5773a287c6a8b65c865e621d03ab /numpy
parentc9dad32a1b5b360807f625ec49cac0a6537033bc (diff)
parent040d0408f4cdb0a472e654acd68c8e1c3fbd84f7 (diff)
downloadnumpy-14e4cc3aa8bc6e01d6494860c7de6bf9ec0ab86b.tar.gz
Merge pull request #4989 from juliantaylor/percentile-fix
BUG: don't overwrite input percentile arrays
Diffstat (limited to 'numpy')
-rw-r--r--numpy/lib/function_base.py2
-rw-r--r--numpy/lib/tests/test_function_base.py8
2 files changed, 9 insertions, 1 deletions
diff --git a/numpy/lib/function_base.py b/numpy/lib/function_base.py
index 618a93bb9..257057666 100644
--- a/numpy/lib/function_base.py
+++ b/numpy/lib/function_base.py
@@ -3036,7 +3036,7 @@ def percentile(a, q, axis=None, out=None,
array([ 3.5])
"""
- q = asarray(q, dtype=np.float64)
+ q = array(q, dtype=np.float64, copy=True)
r, k = _ureduce(a, func=_percentile, q=q, axis=axis, out=out,
overwrite_input=overwrite_input,
interpolation=interpolation)
diff --git a/numpy/lib/tests/test_function_base.py b/numpy/lib/tests/test_function_base.py
index ac677a308..ee3000547 100644
--- a/numpy/lib/tests/test_function_base.py
+++ b/numpy/lib/tests/test_function_base.py
@@ -1865,6 +1865,14 @@ class TestScoreatpercentile(TestCase):
np.percentile(a, [50])
assert_equal(a, np.array([2, 3, 4, 1]))
+ def test_no_p_overwrite(self):
+ p = np.linspace(0., 100., num=5)
+ np.percentile(np.arange(100.), p, interpolation="midpoint")
+ assert_array_equal(p, np.linspace(0., 100., num=5))
+ p = np.linspace(0., 100., num=5).tolist()
+ np.percentile(np.arange(100.), p, interpolation="midpoint")
+ assert_array_equal(p, np.linspace(0., 100., num=5).tolist())
+
def test_percentile_overwrite(self):
a = np.array([2, 3, 4, 1])
b = np.percentile(a, [50], overwrite_input=True)