如何加速这个python代码(条件循环)?

use*_*620 1 python performance loops numpy

我试图在循环中找到一种不使用if ... else条件的方法,以便加速代码,任何想法?

for i in range(n):
    for j in range(n):
        if a1[i, j] == 0:
            b1[i, j] = 1
        else:
            b1[i, j] = a1 / np.sin(a1)
        if a2[i, j] == 0:
            b2[i, j] = 1
        else:
            b2[i, j] = a2 / np.sin(a2)
Run Code Online (Sandbox Code Playgroud)

War*_*ser 8

您正在计算sinc函数的倒数.所以你可以这样做:

b1 = 1.0 / np.sinc(a1/np.pi)
b2 = 1.0 / np.sinc(a2/np.pi)
Run Code Online (Sandbox Code Playgroud)

numpy sinc函数是矢量化的,因此您不需要编写循环.