gpt4 book ai didi

python - numpy 数组上的幂运算符 ** 返回奇怪的结果。这是一个错误吗?

转载 作者:行者123 更新时间:2023-12-05 08:09:00 25 4
gpt4 key购买 nike

来自以下 Python 代码:

val = 499997
val**3

我得到了一个合理的结果:124997750013499973。

但是,从以下代码使用 numpy:

import numpy as np
val = 499997
np_val = np.arange(start=val, stop=val+1, dtype=np.uint64)
np_val**3

我得到了一个奇怪的结果,比如:array([124997750013499968], dtype=uint64)

是不是numpy的bug???

最佳答案

这似乎已在某个时候得到修复。现在在 NumPy 1.17.3 上尝试它会产生正确的输出:

In [1]: import numpy as np 
...: val = 499997
...: np_val = np.arange(start=val, stop=val+1, dtype=np.uint64)
...: np_val**3
...:
Out[1]: array([124997750013499973], dtype=uint64)

In [2]: np.__version__
Out[2]: '1.17.3'

该错误很可能是由一些 NumPy 实现代码转换为 float64 以执行操作然后转换回来造成的,因为这会产生错误的输出:

In [3]: np_val.astype(float)**3
Out[3]: array([1.2499775e+17])

In [4]: _.astype('uint64')
Out[4]: array([124997750013499968], dtype=uint64)

虽然我确实找到了 related bug report,但我无法找到该问题的修复提交或错误报告。来自这个问题。

关于python - numpy 数组上的幂运算符 ** 返回奇怪的结果。这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42943875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com