首页 > 解决方案 > 使用 numpy.arange 方法时应该注意什么?

问题描述

当我想使用 numpy.arange 生成一个 numpy 数组时,我遇到了一个问题。例如,我想生成一个包含 3862 个元素的数组:

array1=numpy.arange(3.5678,3.5678+3862*0.0001,0.0001)

但是 array1 的形状是(3863,). 而更让我困惑的是:

In:
numpy.arange(3.5678,3.5678+3860*0.0001,0.0001).shape
numpy.arange(3.5678,3.5678+3861*0.0001,0.0001).shape
numpy.arange(3.5678,3.5678+3862*0.0001,0.0001).shape
numpy.arange(3.5678,3.5678+3863*0.0001,0.0001).shape
Out:
(3861,);(3861,);(3863,);(3863,)

为什么会这样?由于精度?

非常感谢!

标签: pythonnumpy

解决方案


根据numpy 文档

对于浮点参数,结果的长度为 ceil((stop - start)/step)。因为浮点溢出,这个规则可能会导致out的最后一个元素大于stop。

并且:

停止号:间隔结束。间隔不包括此值,除非在某些情况下 step 不是整数并且浮点舍入会影响 out 的长度。

您可以查看此重复问题问题以获取有关如何处理这种情况的更多详细信息和信息。


推荐阅读