Numpy 数据类型=整数
Numpy dtype=int
在下面的代码中。我得到了 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 的结果不是 [ 0 1 2 2 3 4 5 6 6 7 8 9 10]
而我得到的 x2 的值是 [ 0 1 2 3 4 5 6 7 8 9 10 11 12]
,其中最后一个值 12 超过了最终值为 10。4.Please 阐明我对此的概念。
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]
根据文档:https://docs.scipy.org/doc/numpy1.15.0/reference/generated/numpy.arange.html
stop : number
End of interval. The interval does not include this value, except in some cases where step is not an integer and floating point round-off affects the length of out.
arange : ndarray
Array of evenly spaced values.
For floating point arguments, the length of the result is ceil((stop - start)/step). Because of floating point overflow, this rule may result in the last element of out being greater than 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])
在下面的代码中。我得到了 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 的结果不是 [ 0 1 2 2 3 4 5 6 6 7 8 9 10]
而我得到的 x2 的值是 [ 0 1 2 3 4 5 6 7 8 9 10 11 12]
,其中最后一个值 12 超过了最终值为 10。4.Please 阐明我对此的概念。
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]
根据文档:https://docs.scipy.org/doc/numpy1.15.0/reference/generated/numpy.arange.html
stop : number End of interval. The interval does not include this value, except in some cases where step is not an integer and floating point round-off affects the length of out.
arange : ndarray Array of evenly spaced values.
For floating point arguments, the length of the result is ceil((stop - start)/step). Because of floating point overflow, this rule may result in the last element of out being greater than 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])