【发布时间】:2021-12-20 04:34:12
【问题描述】:
我正在尝试在 Python 中有效地计算总和的总和:
WolframAlpha 能够计算出过高的 n 值:sum of sum。
我有两种方法:for 循环方法和 np.sum 方法。我认为 np.sum 方法会更快。但是,直到大的 n 之前它们都是相同的,之后 np.sum 出现溢出错误并给出错误的结果。
我正在尝试找到计算这个总和的最快方法。
import numpy as np
import time
def summation(start,end,func):
sum=0
for i in range(start,end+1):
sum+=func(i)
return sum
def x(y):
return y
def x2(y):
return y**2
def mysum(y):
return x2(y)*summation(0, y, x)
n=100
# method #1
start=time.time()
summation(0,n,mysum)
print('Slow method:',time.time()-start)
# method #2
start=time.time()
w=np.arange(0,n+1)
(w**2*np.cumsum(w)).sum()
print('Fast method:',time.time()-start)
【问题讨论】:
-
图片不可读。它也是不可点击的(对于the link)。你能修好它吗?例如,通过提供附加静态图片。
-
@PeterMortensen To me it's readable(虽然可能会更好)。你觉得它怎么样?
-
@PeterMortensen 我enlarged 它并修复了链接。您现在可以阅读吗?
-
在 Wolfram Alpha 上将 100 替换为
n。你是done。 -
@EricDuminil Ha,很好。本来可以节省我的时间。虽然如果我没有数错,我仍然少了一个乘法。你知道为什么这些公式是这样写的吗?
标签: python performance sum cumsum