Python numpy数组数学显示奇怪的结果

2024-06-29 00:51:59 发布

您现在位置:Python中文网/ 问答频道 /正文

波纹管数组的最后一个单元格显示错误的结果:

代码:

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

有什么想法吗

谢谢


Tags: 答案代码importnumpy类型错误数字数组
1条回答
网友
1楼 · 发布于 2024-06-29 00:51:59

当您用整数构造numpy数组时,其类型将是int32int64,具体取决于您的系统,而不是预期的float64。因此,当您执行16**16操作时,结果溢出,结果为0

要解决此问题,请为numpy数组指定float64类型,如下所示:

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

或者,如果需要,在数组中的任何数字中添加一个.0,以指定要使用float而不是int

相关问题 更多 >