On Thu, Jan 6, 2011 at 09:40, Keith Goodman <kwgood...@gmail.com> wrote:
> On Thu, Jan 6, 2011 at 2:14 AM,  <josef.p...@gmail.com> wrote:
>> just something I bumped into and wasn't aware of
>>
>>>>> aa
>> array([ 1.,  1.,  1.,  1.,  1.])
>>>>> aa.astype(int)
>> array([0, 1, 0, 0, 0])
>>>>> aa - 1
>> array([ -2.22044605e-16,   2.22044605e-16,  -2.22044605e-16,
>>        -3.33066907e-16,  -3.33066907e-16])
>>>>> np.round(aa).astype(int)
>> array([1, 1, 1, 1, 1])
>
>>> a = np.ones(100)
>>> a.astype(int)
> array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>       1, 1, 1, 1, 1, 1, 1, 1])
>
> My default numpy int is 64 bits. Try 32 bits:
>
>>> a = np.ones(100, np.int32)
>>> a.astype(int)
>
> array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>       1, 1, 1, 1, 1, 1, 1, 1])

He's not pointing out a bug. His array does not have 1s in them, but
values very close to 1, some slightly above and some slightly below,
such that numpy's default printing rounds them to 1. See the "aa - 1"
line.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to