summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorAllan Haldane <ealloc@gmail.com>2017-09-04 23:24:22 +0200
committerGitHub <noreply@github.com>2017-09-04 23:24:22 +0200
commitd6d72787c079079cc8fcb7a1bb1142ed647d7884 (patch)
tree5ee2023e3dcdcb10b5175b31d983a50b87bc5eca /numpy
parent2afa142ae6ee121f6c75f28403526e35473ee6d5 (diff)
parent09257ce4dba8abf375c0d37278e842bd5dccda2d (diff)
downloadnumpy-d6d72787c079079cc8fcb7a1bb1142ed647d7884.tar.gz
Merge pull request #9638 from juliantaylor/nonzero-dtype
BUG: ensure consistent result dtype of count_nonzero
Diffstat (limited to 'numpy')
-rw-r--r--numpy/core/numeric.py2
-rw-r--r--numpy/core/tests/test_numeric.py28
2 files changed, 17 insertions, 13 deletions
diff --git a/numpy/core/numeric.py b/numpy/core/numeric.py
index ed350de7f..fde08490a 100644
--- a/numpy/core/numeric.py
+++ b/numpy/core/numeric.py
@@ -444,7 +444,7 @@ def count_nonzero(a, axis=None):
counts = np.apply_along_axis(multiarray.count_nonzero, axis[0], a)
if axis.size == 1:
- return counts
+ return counts.astype(np.intp, copy=False)
else:
# for subsequent axis numbers, that number decreases
# by one in this new 'counts' array if it was larger
diff --git a/numpy/core/tests/test_numeric.py b/numpy/core/tests/test_numeric.py
index ce6712ed2..bdb3dfe69 100644
--- a/numpy/core/tests/test_numeric.py
+++ b/numpy/core/tests/test_numeric.py
@@ -1026,6 +1026,10 @@ class TestNonzero(object):
# either integer or tuple arguments for axis
msg = "Mismatch for dtype: %s"
+ def assert_equal_w_dt(a, b, err_msg):
+ assert_equal(a.dtype, b.dtype, err_msg=err_msg)
+ assert_equal(a, b, err_msg=err_msg)
+
for dt in np.typecodes['All']:
err_msg = msg % (np.dtype(dt).name,)
@@ -1045,13 +1049,13 @@ class TestNonzero(object):
m[1, 0] = '1970-01-12'
m = m.astype(dt)
- expected = np.array([2, 0, 0])
- assert_equal(np.count_nonzero(m, axis=0),
- expected, err_msg=err_msg)
+ expected = np.array([2, 0, 0], dtype=np.intp)
+ assert_equal_w_dt(np.count_nonzero(m, axis=0),
+ expected, err_msg=err_msg)
- expected = np.array([1, 1, 0])
- assert_equal(np.count_nonzero(m, axis=1),
- expected, err_msg=err_msg)
+ expected = np.array([1, 1, 0], dtype=np.intp)
+ assert_equal_w_dt(np.count_nonzero(m, axis=1),
+ expected, err_msg=err_msg)
expected = np.array(2)
assert_equal(np.count_nonzero(m, axis=(0, 1)),
@@ -1066,13 +1070,13 @@ class TestNonzero(object):
# setup is slightly different for this dtype
m = np.array([np.void(1)] * 6).reshape((2, 3))
- expected = np.array([0, 0, 0])
- assert_equal(np.count_nonzero(m, axis=0),
- expected, err_msg=err_msg)
+ expected = np.array([0, 0, 0], dtype=np.intp)
+ assert_equal_w_dt(np.count_nonzero(m, axis=0),
+ expected, err_msg=err_msg)
- expected = np.array([0, 0])
- assert_equal(np.count_nonzero(m, axis=1),
- expected, err_msg=err_msg)
+ expected = np.array([0, 0], dtype=np.intp)
+ assert_equal_w_dt(np.count_nonzero(m, axis=1),
+ expected, err_msg=err_msg)
expected = np.array(0)
assert_equal(np.count_nonzero(m, axis=(0, 1)),