-2

この関数の if ステートメントは、ベクトル化なしで機能しますか?

def K(T0,z,v):

    for i in range(len(T0)-1):
        GDens[i+1]=(Dens[i+1]-Dens[i])/(z[i+1]-z[i])

    for i in range(len(T0)):
        B[i]=(((ws/Dens0)*k0)**2)*np.exp(-2*alfa*z[i])-((g/Dens0)*GDens[i])

    for i in range(len(T0)):
        if B[i]>0:
            kz[i]=((0.05*h1)**2)*np.sqrt(B[i])+kmin
        else:
            kz[i]=kmin
    kfinal=kz
    return kfinal
4

1 に答える 1

2

あなたが何を求めているのかわかりませんが、これはこのコードをベクトル化する方法です:

 GDens = np.zeros_like(z)
 GDens[:-1] = (Dens[1:] - Dens[:-1]) / (z[1:] - z[:-1])
 B = (((ws/Dens0)*k0)**2)*np.exp(-2*alfa*z)-((g/Dens0)*GDens)
 kz = np.where(B > 0, ((0.05*h1)**2)*np.sqrt(B)+kmin, kmin)
于 2012-11-06T18:23:33.157 に答える