如何使用循环加快计算速度?蟒蛇

时间:2020-09-23 19:07:37

标签: python

我写了这段代码。但是它的工作非常缓慢。

我将再次重复所有这10 ** 4度以找到算术平均值。

帮我加快这段代码的速度。工作极其缓慢。我将不胜感激。没有第三方库谢谢!

2 个答案:

答案 0 :(得分:2)

这是使用numba加速代码的一种简单方法:

m2 = numba.jit(nopython=True)(math)

ipython中的时间:

%timeit math(inv) 每个循环1.44 s±16.3毫秒(平均±标准偏差,共运行7次,每个循环1次)

%timeit -n 7 m2(inv) 每个循环10.4 ms±177 µs(平均±标准偏差,共运行7次,每个循环100次)

这会将您的代码加速100倍以上。

答案 1 :(得分:0)

您不需要所有这些循环。 numpy.random.randint()可以生成一个给定大小的数组,其中包含lowhigh之间的随机整数,因此 np.random.randint(1, 45, (1000, 10000))将生成一个由500行和10k列组成的矩阵,其中填充有随机数。然后,您要做的就是计算包含6(Numpy: find first index of value fast)的每一列的第一行。然后

max_tries = 1000
def do_math(inv):
    rands = np.random.randint(1, 45, (max_tries, 10000))
    first_inv = np.argmax(rands < inv, axis=0)
    counter = first_inv.mean()
    return counter

这并不是您想要的功能完全,而是我发现您的所有循环都非常复杂,因此这应该为您指明正确的方向,您可以根据自己的需要随意调整此代码。此功能将为您提供获得小于inv的随机数(平均超过10000次实验)所需的尝试次数。