【发布时间】:2017-06-06 09:52:24
【问题描述】:
来自以下代码:
import numpy as np
print 2**np.array([32, 33])
我得到了负数 [-2147483648 -2147483648]。我正在使用python 2.6。这是某种错误吗?相反print 2**32给出了正确答案4294967296。
【问题讨论】:
-
你在 Windows 上吗?
-
是的,我在 Windows 上,但我不确定它是否溢出。当我写 print 2**32 我得到 4294967296
-
我能问一下为什么您首先猜测的是内置运算符中的错误吗?
-
做普通的
2**32给出了正确的结果,因为它使用 Python 整数,它可以任意增长(尽管在 Python 2 中大于 CPU 原生整数大小的整数将是long而不是int) 。但是 Numpy 被设计为使用固定大小的数字,而不是 Python 整数。 -
@MYGz 即使使用 64 位 Windows 也可能成为问题:stackoverflow.com/a/36279549/2285236