当前位置:  开发笔记 > 编程语言 > 正文

Python的电源运算符**的错误?

如何解决《Python的电源运算符**的错误?》经验,为你挑选了1个好方法。

从以下代码:

import numpy as np

print 2**np.array([32, 33])

我得到负数[-2147483648 -2147483648].我正在使用python 2.6.这是某种bug吗?相反,print 2**32给出了正确的答案4294967296.



1> DeepSpace..:

这些值过大的存储32-bit intnumpy默认使用.如果将数据类型设置为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]


或者如果你想要精确的整数结果,请使用`dtype = np.int64`
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有