[Numpy-discussion] aa.astype(int) truncates and doesn't round
josef.pktd at gmail.com
josef.pktd at gmail.com
Thu Jan 6 12:04:56 EST 2011
On Thu, Jan 6, 2011 at 10:40 AM, Keith Goodman <kwgoodman at gmail.com> wrote:
> On Thu, Jan 6, 2011 at 2:14 AM, <josef.pktd at 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])
the full exercise includes some calculations first, so we are not precisely at 1
>>> d_
array([[ 1., 0., 0., 0., 0.],
[ 1., -1., 0., 0., 0.],
[ 1., 0., -1., 0., 0.],
[ 1., 0., 0., -1., 0.],
[ 1., 0., 0., 0., -1.]])
>>> np.set_printoptions(precision=2)
>>> np.linalg.pinv(d_)
array([[ 1.00e+00, -2.34e-16, -8.50e-17, -7.63e-17, -8.50e-17],
[ 1.00e+00, -1.00e+00, -1.06e-16, 2.19e-16, -6.18e-17],
[ 1.00e+00, -2.21e-16, -1.00e+00, -2.27e-16, 9.38e-18],
[ 1.00e+00, -6.40e-17, -2.84e-17, -1.00e+00, -7.65e-17],
[ 1.00e+00, -1.70e-16, -9.55e-17, -1.52e-17, -1.00e+00]])
>>> np.linalg.pinv(d_).astype(int)
array([[ 0, 0, 0, 0, 0],
[ 0, -1, 0, 0, 0],
[ 0, 0, -1, 0, 0],
[ 0, 0, 0, -1, 0],
[ 0, 0, 0, 0, -1]])
>>> np.linalg.inv(d_).astype(int)
array([[ 1, 0, 0, 0, 0],
[ 1, -1, 0, 0, 0],
[ 1, 0, -1, 0, 0],
[ 1, 0, 0, -1, 0],
[ 1, 0, 0, 0, -1]])
Josef
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
More information about the NumPy-Discussion
mailing list