python3中的int类型占64位_在windows1064位计算机中,默
认情况下,nu。。。
最初的海报Prana问了⼀个⾮常好的问题。”为什么在64位计算机上,整数默认设置为32位?”在
据我所知,简短的回答是:“因为它的设计是错误的”。
显然,64位机器应该在任何相关的解释器中默认定义⼀个64位的整数。当然,这两个答案解释了为什么情况并⾮如此。现在情况不同了,所以我提供了这个更新。在
我注意到,对于CentOS-7.4linux和macos10.10.5(新的和旧的),运⾏python2.7.14(使⽤Numpy 1.14.0)(截⾄2018年1⽉),默认整数现在定义为64位。(“我的_数组.dtype在最初的⽰例中,现在将在两个平台上报告“dtype('int64')”。在
在任何解释器中使⽤32位整数作为默认整数,如果您正在进⾏整数运算,结果可能⾮常不精确,正如这个问题所指出的:
现在看来Python和Numpy已经被更新和修改(有⼈可能会争辩说,为了复制上述问题中所描述的问题),您必须显式地将Numpy数组定义为int32。在
在Python中,现在在两个平台上,默认整数看起来是int64。此代码在两个平台(CentOS-7.4和MacOSX 10.10.5)上运⾏相同:>>> import numpy as np
>>> tlist = [1, 2, 47852]
>>> t_array = np.asarray(tlist)
python 定义数组>>> t_array.dtype
dtype('int64')
^{pr2}$
[ 1 4 2289813904]
但是如果我们将t_数组设为32位整数,则会得到以下结果,因为整数计算在32位字中的符号位上滚动。在>>> t_array32 =
np.asarray(tlist, dtype=np.int32)
>>> t_array32.dtype
dtype*('int32')>>> print t_array32 ** 2
[ 1 4 -2005153392]
使⽤int32的原因当然是效率。在某些情况下(例如使⽤TensorFlow或其他神经⽹络机器学习⼯具),您希望使⽤32位表⽰法(当然,主要是浮点运算),因为与使⽤64位浮点运算相⽐,速度提⾼可能⾮常显著。在

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。