为什么np.arrange(0.97,3.0,0.01)最后一个值是3.0018,大于3

在 NumPy 中,np.arange 函数用于创建一个等差数列。它的参数分别是起始值、终止值和步长。当你使用 np.arange(0.97, 3.0, 0.01) 时,你期望得到的是从 0.97 开始,每次增加 0.01,直到接近但不包括 3.0 的数列。

然而,由于浮点数的精度问题,当你使用浮点数作为步长时,可能会出现一些微小的误差。这些误差可能会导致最后一个值略微超出你期望的终止值。在这种情况下,最后一个值是 3.0018,这是因为在计算过程中累积了小的误差。

浮点数在计算机中的表示是基于二进制的,而某些十进制小数在二进制表示中是无限循环的,这会导致精度损失。因此,当你使用浮点数进行计算时,尤其是作为循环或迭代的步长时,这种精度损失可能会累积起来。

为了解决这个问题,你可以使用 np.linspace 函数,它在指定的数值范围内生成等间隔的数列,并且可以确保包含起始值和终止值。例如:

import numpy as np

# 使用 np.linspace 替代 np.arange
array = np.linspace(0.97, 3.0, int((3.0 - 0.97) / 0.01) + 1)
print(array)

这将生成一个包含起始值 0.97 和终止值 3.0 的数组,步长为 0.01。int((3.0 - 0.97) / 0.01) + 1 确保数组的长度正确,使得终止值被包含在内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值