当前位置: 首页 > article >正文

为什么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 确保数组的长度正确,使得终止值被包含在内。


http://www.kler.cn/a/302827.html

相关文章:

  • JVM详解:类的加载过程
  • Docker compose部署portainer
  • 使用 Keras 训练一个卷积神经网络(CNN)(入门篇)
  • 844.比较含退格的字符串
  • qt QKeySequence详解
  • 三正科技笔试题
  • Qt-常用控件(2)-按钮类和显示类
  • [概率论] 随机变量的分布函数 (一)
  • Spring Boot项目更改项目名称
  • 亲测可用导航网站源码分享 – 幽络源
  • Rust的常量
  • 云微客AI文案编写,有手就能出“爆款”
  • 【全网唯一中文】bt回测框架中文文档,不是backtrader!是bt
  • win11 MySQL的坑
  • Machine Learning: A Probabilistic Perspective 机器学习:概率视角 PDF免费分享
  • 手机TF卡格式化后数据恢复:方法、挑战与预防措施
  • 【Hot100】LeetCode—62. 不同路径
  • Flask中的上下文(Context)
  • apache文件共享和访问控制
  • 深入理解 Milvus:新一代向量数据库的基础技术与实战指南
  • Linux系统上Oracle12C Release 2 (12.2)打补丁
  • 【Python机器学习】长短期记忆网络(LSTM)
  • 在 Debian 12 上安装中文五笔输入法
  • Zabbix企业级应用案列
  • C#学习笔记 .NET Core使用注意事项
  • 基于相亲交友系统的高效匹配算法研究