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

Python numpy数组数学显示奇怪的结果,python,arrays,python-3.x,numpy,Python,Arrays,Python 3.x,Numpy,波纹管数组的最后一个单元格显示错误的结果: 代码: 结果: 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数组时,

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

代码:

结果:

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。

要添加到它,我认为默认值是
int64
,如果您想检查,则会发生溢出,因为
np.iinfo(np.int64)。max/(16**16)
小于1。实际上,数据类型将是一些整数数据类型,但确切的大小取决于平台,因此它是64位还是32位体系结构以及操作系统。基本上,它是C长的什么。假设是64位操作系统,在Linux上是64位整数,但在windows上是32位整数。此外,您只需执行
numpy.array([[1,2,3,4],[5,6,8,16]],dtype=numpy.float64)
@juanpa.arrivillaga很好,刚刚更新了答案。
b=numpy.array ([[1,2,3,4],[5,6,8,16]], dtype='float64')