python浮点数的处理

浮点数一般是numpy,pandas最经常处理的数据类型。
掌握浮点数的操作很大程度上就相当于掌握了pandas。

本节目标:掌握numpy,pandas浮点数操作的一些常识

本节技术点:numpy,pandas

本节阅读需要(10)min。
本节实操需要(10)min。


文章目录

  • python浮点数的处理
  • 前言
  • 一、生成浮点数
    • series
    • DataFrame
  • 二、浮点数的运算
  • 三、浮点数的比较
    • math.isclose()
    • np.allclose()
  • 总结

前言

我们都知道计算机最底层是二进制的!!!
所以我们习以为常的十进制数据最终也是二进制表示。
不幸的是,大多数十进制小数不能完全用二进制小数表示。结果是,一般情况下,
开发者输入的十进制浮点数仅由实际存储在计算机中的近似的二进制浮点数表示。
这是二进制浮点数的自然性质:它不是 Python 中的一个 bug,也不是开发者的代码中的 bug。

最后我们要说,虽然对于不同场景下浮点数的处理“没有统一的答案”,但也不要过分惧怕浮点数。Python 浮点数计算中的误差源之于浮点数硬件,大多数机器上每次计算误差不超过 2**53 分之一。对于大多数任务这已经足够了,但是开发者要在心中记住这不是十进制算法,每个浮点数计算可能会带来一个新的舍入错误。


一、生成浮点数

一般浮点数都是随机生成,或者是等差数列。

series

生成随机一维数据

import pandas as pd
import numpy as npn1 = np.random.randn(5)
s1 = pd.Series(n1,dtype="float")

DataFrame

生成随机正态分布的二维数据

n2 = np.random.randn(5,5)
df1 = pd.DataFrame(n2,dtype="float")

二、浮点数的运算

浮点数的加减乘除,前面numpy和pandas已经介绍过了,都是对位对齐的。

不再赘述。

三、浮点数的比较

重中之重,面试经常问的问题。

0.1+0.1 == 0.2 # True
0.8-0.1 == 0.7 # False

这就和底层的具体实现相关。但是我想说的是浮点数的比较应该是近似相等,而不是值的绝对相等。
前一个就是底层值相等。因为0.1二进制后不会有误差。但是0.7和0.3这种二进制都是近似的。所以有误差。

math.isclose()

import math
math.isclose(0.8-0.1,0.7)
math.isclose(0.8-0.1,0.7,rel_tol=1e-10)

rel_tol相当于允许的误差范围。

一般这个过程是人工实现的。做差让小于一个很小的值就算是相等

np.allclose()

s2 = s1.copy()
s2
s2 == s1
np.allclose(s2,s1)

a, b : array_like
Input arrays to compare.
rtol : float
The relative tolerance parameter (see Notes).
atol : float
The absolute tolerance parameter (see Notes).
equal_nan : bool
Whether to compare NaN’s as equal. If True, NaN’s in a will be considered equal to NaN’s in b in the output array

allclose是返回的所有元素比较的结果,取得是交集。有一个不在tolerance范围内就False。


总结

浮点数的最终存储是二进制的。但是二进制无法有效表示,所以取得是近似值。所以及时有的数十进制一模一样,
二进制也存在差异。

所以不能简单用==判断是否相等。
而应该作差小于一个很小的值,视情况而定。

python浮点数的处理相关推荐

  1. Python 浮点数运算

    2019独角兽企业重金招聘Python工程师标准>>> 浮点数用来存储计算机中的小数,与现实世界中的十进制小数不同的是,浮点数通过二进制的形式来表示一个小数.在深入了解浮点数的实现之 ...

  2. python浮点数运算问题_python基础教程之. 浮点数运算:问题和局限

    14. 浮点数运算:问题和局限¶ 浮点数在计算机硬件中表示为以 2 为底(二进制)的小数.例如,十进制小数 0.125 是1/10 + 2/100 + 5/1000 的值,同样二进制小数 0.001 ...

  3. python 浮点数比较_Python中的浮点数

    浮点数在计算机中表达为二进制(binary)小数.例如:十进制小数: 0.125 是 1/10 + 2/100 + 5/1000 的值. 类似地,二进制小数: 0.001 是 0/2 + 0/4 + ...

  4. 关于python的浮点数类型、以下_python入门教程Python 浮点数数据类型详解 [学习 Python 必备基础知识][看此一篇就够了]...

    python基础语法.jpg 您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其 ...

  5. python浮点数类型_python浮点类型

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 目录python 浮点数数据类型概述2. 2. 1 指数表示形式概述4.1 微信 ...

  6. python浮点数怎么运算_Python 浮点数运算

    浮点数用来存储计算机中的小数,与现实世界中的十进制小数不同的是,浮点数通过二进制的形式来表示一个小数.在深入了解浮点数的实现之前,先来看几个 Python 浮点数计算有意思的例子: 0.1 == 0. ...

  7. python浮点数运算问题

    python浮点数运算问题 在python中对于一些浮点数的运算结果,往往出现一些意想不到的结果. 原因 在python中: 一个十进制数 >>>以二进制形式(近似值)存储到计算机& ...

  8. python 浮点数计算

    python 浮点数计算之 加减乘除 ------------------- 适用正负数整数浮点数 class float_subtraction():def __init__(self, _sbt, ...

  9. python理解浮点数运算的误差_PyTips 0x1a - Python 浮点数运算

    版权声明:此文章转载自 Yushneng PyHub 如需转载请联系听云College团队成员阮小乙,邮箱:ruanqy#tingyun.com 本系列完整文档已托管在 Read the Docs: ...

最新文章

  1. PHP foreach遍历数组(多种方式)
  2. 苹果手机怎么拍星空_手机拍星空,看这篇教程就够了!
  3. 工作173:数组转换为对象
  4. 字体渲染 渲染引擎
  5. 曾鸣:为什么要让「听得见炮火的士兵」做决定?| 干货
  6. jpa mysql 配置文件_Spring+JPA+MySQL的配置文件
  7. uniapp 生成二维码长按保存_工程设备巡检如何用二维码管理?
  8. 如何在VScode中配置python第三方库
  9. 电力拖动自动控制系统_建筑电气控制系统安装
  10. 云计算的技术发展趋势
  11. 惠普服务器文档,惠普服务器详细整理参数
  12. 谷歌io大会 android p,十年最大革新 Android P现身谷歌I/O大会
  13. 产品经理:个人能力提升方法
  14. php f4v元数据,IIS设置支持flv,f4v,mp4,ogv,webm
  15. rabbitMQ修改默认端口
  16. ROS常用局部路径规划算法比较
  17. EM78系列单片机的开发工具及编程器
  18. 京东直租瞄准租房痛点,重新定义房屋租赁行业新标准!
  19. 通信原理 | 滤波器:滤波器的概念、理想滤波器和实际滤波器
  20. 2022 199管综真题及答案解析

热门文章

  1. 全国网球青年团体锦标赛
  2. 静态类型语言和动态类型语言
  3. 不限速、没有广告,这个 Windows 神器能帮你把网盘内嵌在系统中
  4. 从毕业生成为职业人(转载)
  5. C语言基础入门学习--学习笔记
  6. JQuery 表格隔行换色
  7. oracle主键自增触发器编写
  8. 伤害世界服务器连接失败_伤害世界无法连接服务器怎么办 | 手游网游页游攻略大全...
  9. DVD管理系统:为某音像店开发一个迷你DVD管理器,实现DVD碟片的管理,包括如下功能:
  10. Matlab概率论与数理统计实践-正态分布