我正在 PyCharm 中尝试一些东西,所以我写了一段简单的代码,包括:
xlist = np.arange(99995,99996)
print(xlist*xlist)
>>> array([1409065433])
如您所见,答案是错误的!我应该获得 9999000025。我偶然发现了这一点,因为我最初写道:
xlist = np.arange(0,100000)
for x in xlist:
print(x)
z = x * x
print(z)
print(xlist*xlist)
并得到了许多奇怪的结果,包括x 大约 90000 的负值。
我的三个朋友测试了这段代码,两个得到了与我相同的结果(在 Windows 上),另一个得到了正确的结果,在 Linux 上,所以它似乎依赖于操作系统......
有谁知道这到底是怎么回事?
9999000025 不适合 32 位整数。与常规 Python 整数不同,NumPy 数据类型是固定大小的,并且它们可以容纳的值是有限的。
这里的解决方法是指定dtype=np.int64
.
x = np.arange(99995,99996, dtype=np.int64)
print(x * x)
Out[155]: array([9999000025])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句