Python Numpy dtype=int
在下面的代码中,我得到了x1的预期结果Python Numpy dtype=int,python,python-3.x,numpy,numpy-ndarray,numerical-computing,Python,Python 3.x,Numpy,Numpy Ndarray,Numerical Computing,在下面的代码中,我得到了x1的预期结果 import numpy as np x1 = np.arange(0.5, 10.4, 0.8) print(x1) [ 0.5 1.3 2.1 2.9 3.7 4.5 5.3 6.1 6.9 7.7 8.5 9.3 10.1] 但在下面的代码中,当我设置dtype=int时,为什么x2的结果不是[01 2 3 4 5 6 6 7 8 9 10],而是将x2的值设为[01 2 3 4 5 6 7 8 9 10 11 12],其中
import numpy as np
x1 = np.arange(0.5, 10.4, 0.8)
print(x1)
[ 0.5 1.3 2.1 2.9 3.7 4.5 5.3 6.1 6.9 7.7 8.5 9.3 10.1]
但在下面的代码中,当我设置dtype=int时,为什么x2的结果不是[01 2 3 4 5 6 6 7 8 9 10]
,而是将x2的值设为[01 2 3 4 5 6 7 8 9 10 11 12]
,其中最后一个值12超出了10.4的最终值。请澄清我的概念
import numpy as np
x2 = np.arange(0.5, 10.4, 0.8, dtype=int)
print(x2)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12]
根据文件:
站牌:号码
幕间休息结束。间隔不包括此值,除非在某些情况下步长不是整数且浮点舍入会影响输出的长度
阿兰奇:天哪
等间距值的数组。对于浮点参数,结果的长度为ceil((停止-启动)/step)。由于浮点溢出,此规则可能导致out的最后一个元素大于stop 最后一个元素是
In [33]: np.ceil((10.4-0.5)/0.8)
Out[33]: 13.0
因此,在np.arange(0.5,10.4,0.8,dtype=int)
的情况下,我们看到超调为12,因为在上述情况下stop=13
,默认值为0
因此,我们观察到的输出是
In [35]: np.arange(0.5, 10.4, 0.8, dtype=int)
Out[35]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
因此,生成整数范围的更好方法是使用如下整数参数:
In [25]: np.arange(0, 11, 1)
Out[25]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])