简体   繁体   中英

Python numpy array math showing weird results

The last cell of the bellow array shows a wrong result:

Code:

import numpy
b=numpy.array ([[1,2,3,4],[5,6,8,16]])
b=b**b/b+1
b

result:

array([[2.000000e+00, 3.000000e+00, 1.000000e+01, 6.500000e+01],
       [6.260000e+02, 7.777000e+03, 2.097153e+06, 1.000000e+00]])

All numbers are correct except for the last one.

Type is numpy.float64 . The correct answer is 1.152921504606847e+18 .

Any ideas?

Thanks

When you construct a numpy array with whole numbers, its type will be int32 or int64 depending on your system, instead of the float64 you expected. So when you do 16**16 , the result overflowed and you end up with a 0.

To fix this, specify the float64 type for your numpy array, like this:

b=numpy.array ([[1,2,3,4],[5,6,8,16]], dtype='float64')

Or if you want, add a .0 to any of the numbers in your array to specify that you want to use float not int.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM