2012-11-06 50 views
-2

該函數中的if語句在沒有向量化的情況下工作?如果numpy數組中的語句總是需要向量化

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 

回答

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)