From 43c6a89128347928c5fe26f67ba2a0a022f00822 Mon Sep 17 00:00:00 2001 From: John Kirkham Date: Fri, 22 Jan 2016 17:31:13 -0500 Subject: BUG: Make sure that the `ord=0` case returns a float. --- numpy/linalg/linalg.py | 2 +- numpy/linalg/tests/test_linalg.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/numpy/linalg/linalg.py b/numpy/linalg/linalg.py index fe2031efb..f333bde47 100644 --- a/numpy/linalg/linalg.py +++ b/numpy/linalg/linalg.py @@ -2150,7 +2150,7 @@ def norm(x, ord=None, axis=None, keepdims=False): return abs(x).min(axis=axis, keepdims=keepdims) elif ord == 0: # Zero norm - return (x != 0).sum(axis=axis, keepdims=keepdims) + return (x != 0).astype(float).sum(axis=axis, keepdims=keepdims) elif ord == 1: # special case for speedup return add.reduce(abs(x), axis=axis, keepdims=keepdims) diff --git a/numpy/linalg/tests/test_linalg.py b/numpy/linalg/tests/test_linalg.py index 5c6142b7b..60486d4ce 100644 --- a/numpy/linalg/tests/test_linalg.py +++ b/numpy/linalg/tests/test_linalg.py @@ -868,10 +868,7 @@ class _TestNorm(object): assert_almost_equal(an, 0.0) an = norm(at, 0) - # Trying to assert equality to `np.dtype(int).type` fails on - # 32-bit platforms as it still becomes `np.int64` instead of - # `np.int32`. So, this is our workaround. - assert_(an.dtype.type in [np.int32, np.int64]) + assert_(issubclass(an.dtype.type, np.floating)) assert_almost_equal(an, 2) an = norm(at, 1) -- cgit v1.2.1