【问题标题】:Python len() giving one value higher than actual length of the array [closed]Python len() 给出一个比数组的实际长度高的值[关闭]
【发布时间】:2023-02-13 22:38:19
【问题描述】:

当我尝试查找使用 len(arange()) 制作的列表的长度时,其中一个显示错误答案(超出 1)。背后的原因是什么?还是我算错了?请看图(https://i.stack.imgur.com/fg6S8.jpg)

预期长度为 500,但它显示的长度为 501

【问题讨论】:

标签: python arrays


【解决方案1】:

这是因为 numpy 的局限性,以及使用非常小的数字进行计算会在结果中产生小的舍入误差这一事实。

Via numpy.org:

输出的长度在数值上可能不稳定。另一个稳定性问题是由于 numpy.arange 的内部实现。用于填充数组的实际步长值是 dtype(start + step) - dtype(start) 而不是 step。由于转换或由于在开始比步长大得多时使用浮点数,可能会在此处发生精度损失。这可能会导致意外行为。

为了证明这一点,如果您简单地将范围的值乘以 1000 得到 print(len(np.arange(0,1000/1000,1000/(500000)))) 然后你得到500的正确答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 2019-02-28
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多