diff options
| author | Allan Haldane <ealloc@gmail.com> | 2017-09-04 23:24:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-09-04 23:24:22 +0200 |
| commit | d6d72787c079079cc8fcb7a1bb1142ed647d7884 (patch) | |
| tree | 5ee2023e3dcdcb10b5175b31d983a50b87bc5eca /numpy | |
| parent | 2afa142ae6ee121f6c75f28403526e35473ee6d5 (diff) | |
| parent | 09257ce4dba8abf375c0d37278e842bd5dccda2d (diff) | |
| download | numpy-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.py | 2 | ||||
| -rw-r--r-- | numpy/core/tests/test_numeric.py | 28 |
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)), |
