【发布时间】:2020-09-14 15:03:35
【问题描述】:
当我的朋友运行以下代码时,它会发出 RuntimeWarning 并返回“inf”。但是,如果我运行相同的代码,它会在没有警告的情况下执行并返回一个值。
import numpy as np
total = 0
k = 10**6
arr = np.arange(k, 0, -1)
for i in arr:
total += 1/(i**2)
print(total)
这是她的输出:
\Anaconda3\lib\site-packages\ipykernel_launcher.py:7: RuntimeWarning: divide by zero encountered in long_scalars
import sys
inf
用内置的 range() 替换 np.arange() 解决了这个问题,她得到了和我一样的输出。
我的问题是:是什么导致她的输出与我的输出不一致?此外,为什么她在使用 np.arange 与 range 时会看到差异,而对我来说输出是相同的?
我们都通过 Anaconda 使用 python 3.7.4,在 64 位 Windows 10 上使用 numpy 1.16.5。
【问题讨论】:
-
首先使用
print()查看arange()和range()的值。 -
同样的问题 W10 x64 Python 3.7
-
它在 LInux Mint(64 位)、Python 3.7.7(64 位)、numpy 1.18.4(没有 Anaconda)上都能正常工作。相同的 Python 2.7.17(64 位),numpy 1.16.6 你在两台电脑上都使用
64-bitPython 吗? -
@furas 刚刚检查过。我们都在使用
64-bitPython。 -
@furas 打印似乎为 arange() 和 range() 显示相同的值,当然只是将 arange() 作为一个 numpy 数组。