本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

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即可


Offer

推广

 继续浏览关于 的文章

 本文最后更新于:2021/08/30 19:23:38,可能因经年累月而与现状有所差异

 引用转载请注明:诗恩有趣cnfunny - 有趣的 > Python > Python库Numpy求和错误(溢出问题):计算结果对不上了