[pypy-issue] [issue1663] np.sum on arrays of bools doesn't count past 127 correctly

Ian Ozsvald tracker at bugs.pypy.org
Wed Dec 18 00:45:02 CET 2013


New submission from Ian Ozsvald <ian at ianozsvald.com>:

np.sum(np.array([<booleans>]) with over 127 True values results in an incorrect
count. Using Python's sum instead produces the correct answer. np.sum gives the
correct answer for smaller counts of True values. Two examples are below - the
tipping point seems to be a list of True values that sum to 128 and multiples of
128.

Version: PyPy Nightly for today:
pypy-c-jit-68443-d5e489e07679-linux64
and numpy branch checked-out today.

Python 2.7.3 (d5e489e07679, Dec 16 2013, 23:00:17)
[PyPy 2.3.0-alpha0 with GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``"messy" is not a judgement, but
just a fact of complicatedness''
>>>> import numpy as np
>>>> np.version
<module 'numpy.version' from
'/home/ian/Downloads/pypy-c-jit-68443-d5e489e07679-linux64/env_numpy/site-packages/numpy/version.pyc'>
>>>> np.sum(np.array([True,False]))
1
>>>> np.sum(np.array([True,False]*1000))  # Incorrect behaviour
-24
>>>> sum(np.array([True,False]))
1
>>>> sum(np.array([True,False]*1000))
1000

It feels as though the counter is a single byte (as suggested below using
array.itemsize), it counts up to 127 and then counts down back to 0 (when it
should be counting to 256 and beyond), then cycles again:

>>>> np.sum(np.array([True,False]))
1
>>>> np.sum(np.array([True,False]*127))
127
>>>> np.sum(np.array([True,False]*128))
-128
>>>> np.sum(np.array([True,False]*129))
-127
>>>> np.sum(np.array([True,False]*255))
-1
>>>> np.sum(np.array([True,False]*256))
0
>>>> np.sum(np.array([True,False]*257))
1
>>>> np.sum(np.array([True,False]*384))
-128
>>>> np.sum(np.array([True,False]*385))
-127

>>>> np.array([True,False])
array([ True, False], dtype=bool)
>>>> arr=np.array([True,False])
>>>> arr.itemsize
1

----------
nosy: +ianozsvald
status: unread -> chatting

________________________________________
PyPy bug tracker <tracker at bugs.pypy.org>
<https://bugs.pypy.org/issue1663>
________________________________________


More information about the pypy-issue mailing list