From 5911fea9a2e880fe4c655af4d667d57d45121f91 Mon Sep 17 00:00:00 2001 From: Sebastian Berg Date: Thu, 4 Jul 2019 12:45:31 -0700 Subject: BUG: i0 Bessel function regression on array-likes supporting ufuncs For array likes supporting UFuncs, `np.abs` would return an array-like, and this is currently not compatible with the use of `np.piecewise`. The simplest fix seems to be to just call asanyarray (which piecewise calls anyway on the array) beforehand. This way we ensure the conditions are also an array. Fixes gh-13894 --- numpy/lib/tests/test_function_base.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'numpy/lib/tests/test_function_base.py') diff --git a/numpy/lib/tests/test_function_base.py b/numpy/lib/tests/test_function_base.py index c0b8ad6b8..eae52c002 100644 --- a/numpy/lib/tests/test_function_base.py +++ b/numpy/lib/tests/test_function_base.py @@ -2005,6 +2005,22 @@ class Test_I0(object): assert_equal(i0_0.shape, (1,)) assert_array_equal(np.i0([0.]), np.array([1.])) + def test_non_array(self): + a = np.arange(4) + + class array_like: + __array_interface__ = a.__array_interface__ + + def __array_wrap__(self, arr): + return self + + # E.g. pandas series survive ufunc calls through array-wrap: + assert isinstance(np.abs(array_like()), array_like) + exp = np.i0(a) + res = np.i0(array_like()) + + assert_array_equal(exp, res) + class TestKaiser(object): -- cgit v1.2.1