PCYO 评测夜鸥 六度计算世界

少年强 则 中国强

Python库Numpy求和错误(溢出问题):计算结果对不上了

简单介绍

Numpy是一个著名的科学计算库(数学库)
请输入图片描述

先看代码

 testList=[i for i in range(1, 100001)] 
 snp=np.array(testList) 
 def tIncrease(s): 
 sum=0 
 for x in s: 
 sum+=x 
 print(str(sum)[-150:]) 
 def tIncreseNp(snp): 
 print(str(snp.sum())[-150:]) 
 
 st=time.time() 
 tIncrease(testList) 
 print(time.time()-st) 
 st=time.time() 
 tIncreseNp(snp) 
 print(time.time()-st) 

输出结果

 5000050000 
 0.0030014514923095703 
 705082704 
 0.0 

分析

  1. 明显用传统for结果是正确的,但是numpy求和的值不对了
  2. 涉及到numpy.sum 的dtype默认参数是int32整数(存在边界值65535,超过则溢出)

优化

在numpy的数组定义时,手动指定dtype=numpy.float64即可

本原创文章未经允许不得转载 | 当前页面:PCYO 评测夜鸥 六度计算世界 » Python库Numpy求和错误(溢出问题):计算结果对不上了

评论