diff options
author | Sebastian Berg <sebastian@sipsolutions.net> | 2019-07-04 12:45:31 -0700 |
---|---|---|
committer | Sebastian Berg <sebastian@sipsolutions.net> | 2019-07-04 12:51:41 -0700 |
commit | 5911fea9a2e880fe4c655af4d667d57d45121f91 (patch) | |
tree | c0ab6785c1eedc75503850c654bf456dc73fe527 /numpy/lib/tests/test_function_base.py | |
parent | deea4983aedfa96905bbaee64e3d1de84144303f (diff) | |
download | numpy-5911fea9a2e880fe4c655af4d667d57d45121f91.tar.gz |
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
Diffstat (limited to 'numpy/lib/tests/test_function_base.py')
-rw-r--r-- | numpy/lib/tests/test_function_base.py | 16 |
1 files changed, 16 insertions, 0 deletions
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): |