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