从以下代码:
import numpy as np print 2**np.array([32, 33])
我得到负数[-2147483648 -2147483648]
.我正在使用python 2.6.这是某种bug吗?相反,print 2**32
给出了正确的答案4294967296
.
这些值过大的存储32-bit int
其numpy
默认使用.如果将数据类型设置为float
(或64-bit int
),则会得到正确的结果:
import numpy as np print 2 ** np.array([32, 33], dtype=np.float) # [ 4.2946730e+09 8.58993459e+09 ] print 2 ** np.array([32, 33], dtype=np.int64) # 64-bit int as suggested by PM 2Ring # [ 4294967296 8589934592]