05 - 速过浮点类型 |【初尝decimal库】
本帖最后由 不二如是 于 2020-2-12 16:08 编辑上一讲我们介绍完整数类型,这次来看浮点类型。
Numpy 中浮点(float)分为:float16(半精度)、float32(单精度)、float64(双精度)
浮点的计算机底层结构,科学技术法,偏移,我们就不讲啦,因为会跑的很远,大家也不见得跟得上。
不信吗?
就拿单进度来 float32 来说,它分为:1 位符号,8 位指数,23 位尾数...
指数中又有阶码...
搞懂这些呢,其实对理解 Numpy 也没啥用处。
你只需知道:
**** Hidden Message *****
可爱的狱友们都接受过素质教育,那么告诉我:0.1 + 0.2 = 多少?
没错,记住你给的答案。
我们在 Numpy 中输入看看:
0.1 + 0.2
输出:
怎么肥四??
继续测下这个:
0.1+0.1+0.1-0.3
输出:
按理说是 0,但输出怎么不是 0 呢?
这就是用浮点数计算会来的问题。
如果在金融业,这个就很可怕啦,之前有解释过,这里也不细说啦。
如何得到我们想要的结果呢?
利用 round 方法。
例如我们将 0.1 + 0.2 结果取 1 位:
round(0.1+0.2,1)
输出:
第二个也一样:
round(0.1+0.1+0.1-0.3,1)
输出:
这样就不关心后面的小尾巴了。
不过这种很“鲁莽”,生生的切数字!
decimal 库
更好的做法就是使用 decimal 用于计算十进制数。
需要导入:
from decimal import Decimal
然后看下 0.1 存在计算机中是什么样子:
Decimal(0.1)
输出:
相加时如何避免后面的一堆数呢?
可以先转为字符串(整数可以不写 ' '):
a = Decimal('0.1')
b = Decimal('0.2')
a+b
输出:
不循环小数也可以:
a = Decimal('10')
b = Decimal('3')
a/b
输出:
我们有的时候不需要太多位数,就可以使用 getcontext()
看一下官方的使用说明:
from decimal import getcontext
c = getcontext()
c
输出:
输出里面对应的都是参数说明,重点关注 prec 。
它代表位数,28 意味着有 28 位。
我们手动将其缩小,再来跑一下:
c.prec = 2
a = Decimal('10')
b = Decimal('3')
a/b
结果你们自己试~
Numpy 中浮点类型的坑
我们用半精度 float16 创建一个数组:
arr1 = np.array(,dtype=np.float16).reshape(2,2)
arr1
输出:
计算机中精度不同,存在的值会有误差。
例如先用到向量化计算,为每位 * 10000:
arr1 *10000
输出:
如果一开始我们就用默认的 float64,再来看:
arr2 = np.array(,dtype=np.float64).reshape(2,2)
arr2 * 10000
输出:
这个输出就是我们要的。
如果数字精度要求非常高,浮点数的精度就要严格使用。
Numpy 中通过 set_printoptions(precision=?) 来设置精度:
np.set_printoptions(precision=2)
arr3 = np.array().reshape(2,2)
arr3/3
最后科普下浮点类型的精度范围:
[*]float16(f2) 10^5 - 10^-5
[*]float32(f4) 10^38 - 10^-38
[*]float64(f8) 10^308 - 10^-308
精度越大,代表范围越大,各有各的好处。
如果是分布式计算,用 float16 就可以。
日常我们不用特意指定,一律用默认就好。
下一讲,我们学习最常用的索引,切片,花式索引。
源码:
如果有收获,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
如果想看更多,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} ) Numpy 好好玩,我要订阅 淘专辑
抢好沙发 怎么和小甲鱼一样的套路未完待续...
{:10_285:}
Judie 发表于 2020-2-12 08:47
怎么和小甲鱼一样的套路未完待续...
{:10_278:}很快填坑 Numpy 好好玩,我已订阅淘专辑{:10_304:} Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩, Numpy 好好玩,我要订阅 淘专辑 Numpy 好好玩,我不要订阅 淘专辑
页:
[1]
2