首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy dtype=int

Numpy dtype=int
EN

Stack Overflow用户
提问于 2019-04-27 15:05:45
回答 1查看 5.7K关注 0票数 5

在下面的代码中,.I得到了x1的预期结果

代码语言:javascript
复制
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的结束值,请澄清我的概念。

代码语言:javascript
复制
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]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-27 15:21:16

根据文档:https://docs.scipy.org/doc/numpy1.15.0/reference/generated/numpy.arange.html

停止:间隔的数字结束。该间隔不包括此值,除非在某些情况下,步骤不是整数,浮点舍入会影响out的长度。 阵列:均匀间隔值的雷达阵列。 对于浮点参数,结果的长度为ceil((停止-开始)/step)。由于浮点溢出,此规则可能导致out的最后一个元素大于stop。

最后一个元素是。

代码语言:javascript
复制
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,

因此,我们观察到的输出是。

代码语言:javascript
复制
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])

因此,生成整数范围的更好方法是使用整数参数,如下所示:

代码语言:javascript
复制
In [25]: np.arange(0, 11, 1)                                                    
Out[25]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55881882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档