如何在Python的for循环中添加布尔表达式而不是在每个elif下粘贴计算行

问题描述 投票:0回答:1

我正在尝试将 MATLAB 脚本转换为 Python。我有一个工作代码,但它非常笨重,我已将计算行粘贴到每个 if 和 elif 行下方以使其工作。我希望得到任何建议来使这段代码更加优雅

脚本应该:

  1. 迭代数组 f 中的每个值。
  2. 如果 f[j] 大于 0.09,则变量 sigma = 0.09。
  3. 如果 f[j] 小于 0.07,则变量 sigma = 0.07。
  4. 然后,使用变量 sigma 计算值 S[j]。

我当前的代码如下,我发布了 S 的随机公式,因为我的实际计算更复杂,不想进一步混淆人们。

import numpy as np
fp = 0.097

for j in range(1,max(f.shape)):
    if f[j]<fp:
         sigma = 0.07
         d = 2*(sigma**2)*f[j]**2
         S[j-1] = np.exp((-5/4)*(f[j]/fp)**-4)/sigma
    elif f[j]>fp:
        sigma = 0.09
        c = -(f[j]-fp)**2
        d = 2*(sigma**2)*f[j]**2
        S[j-1] = np.exp((-5/4)*(f[j]/fp)**-4)/sigma

python loops boolean
1个回答
0
投票

怎么样:

import numpy as np
fp = 0.097

for j in range(1,max(f.shape)):
    sigma = 0.07 if f[j]<fp else 0.09
    d = 2*(sigma**2)*f[j]**2            ## is d actually used in the real formula?
    S[j-1] = np.exp((-5/4)*(f[j]/fp)**-4)/sigma
© www.soinside.com 2019 - 2024. All rights reserved.