波纹管数组的最后一个单元格显示错误结果:
代码:
import numpy
b=numpy.array ([[1,2,3,4],[5,6,8,16]])
b=b**b/b+1
b
结果:
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]])
除了最后一个数字外,所有数字都是正确的。
类型是 numpy.float64
。正确答案是 1.152921504606847e+18
。
有什么想法吗?
谢谢
最佳答案
当你用整数构造一个 numpy
数组时,它的类型将是 int32
或 int64
取决于你的系统,而不是 float64
你期望的。因此,当您执行 16**16
时,结果溢出并且您以 0 结束。
要解决此问题,请为您的 numpy 数组指定 float64
类型,如下所示:
b=numpy.array ([[1,2,3,4],[5,6,8,16]], dtype='float64')
或者,如果您愿意,可以将 .0 添加到数组中的任何数字,以指定您要使用 float 而不是 int。
关于Python numpy 数组数学显示奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63044748/