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

标签 python arrays python-3.x numpy

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

代码:

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 数组时,它的类型将是 int32int64 取决于你的系统,而不是 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/

相关文章:

javascript - 如何根据数字属性对对象数组进行排序

http - 在 Python3 中使用 Urllib 下载文件,出现 HTTP 错误 403-伪造用户代理?

python - 查找客户在 pandas 中活跃的最大连续月份数

python - 如何从类文件对象中使用 python mimetypes.guess_type

python - 如何将 Django 的设置对象变成字典?

python - : python string assignments accidentally change '\b' into '\x08' and '\a' into '\x07' , 为什么 Python 这样做?

python - 来自 Python 调试器的列表理解范围错误

arrays - 在有序数组中快速查找元素

arrays - 当 Data.Vector.unfoldr 不融合时会发生什么?

python - 如何使用 python 比较同一数据框中的两列来创建新列?