为什么python除法结果会有小数点0_数据分析番外篇07_Python的除法居然是这样的...

在进行数据试验时,发现Python除法结果有时会被取整,导致预期的线性关系变为分类函数。问题源于Python的True除法和Floor除法。在Python 3.0之前,整数相除执行Floor除法,而包含浮点数时执行True除法。Python 3.0及以后版本默认执行True除法。为避免整数除法取整,需导入除法功能。修正后,得到了预期的线性函数关系,并通过三维可视化进一步展示了这种关系。
摘要由CSDN通过智能技术生成

前天的一次数据试验,由于没有搞懂Python中除法的性质,导致浪费了一个上午的时间在那里纠结,汗。。。

数据试验的背景是想研究一下如下函数变化的性质,并将其可视化

Y= (A-B)/(A+B)

初步的想法是利用Python产生随机数来进行模拟试验,首先固定“A+B”的值,如A+B=1000来尝试研究一下在B变化的情况下,Y和B的关系,其实这个关系非常简单,当A+B固定后,“A-B”可以表达为“A+B”-2B。很明显这个时候B和Y是一个简单的线性关系。理论上已经知道了结果了,开始尝试代码实现吧,哪知结果出乎预料。

这是什么鬼,如此之完美的逻辑回归分类函数?是不是让你想到了Sigmoid函数图像。

通过输出Y值,能看到除了0就是-10,这明显是除法数值被取整了呀,那问题到底出在那里呢?以前使用Python做运算的时候,并没有遇到类似的问题。难道又是因为数据维度的问题?尝试了各种随机数产生的方法,有时候会是线性函数,有时候就如上图。百思不得其解(请原谅一个刚刚学习编程的老年人的对语言的认知水平)

通过查询,原来Python的除法分为Ture除法和floor除法,在3.0版以前的Python中的除法跟数的类型相关,如果是两个整数相除,程序执行的是floor除法,自动将结果取整。如果运算中包含了浮点数,程序则执行true除法,会获得精确的除法结果。3.0以后的版本中的除法则不与参与除法的数据的类型相关,一律采用true除法。想要让3.0版以前的Python执行true除法,需要在做运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>