简单介绍
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
分析
- 明显用传统for结果是正确的,但是numpy求和的值不对了
- 涉及到numpy.sum 的dtype默认参数是int32整数(存在边界值65535,超过则溢出)
优化
在numpy的数组定义时,手动指定dtype=numpy.float64即可