您知道一种方法来改变循环以获得更高效的功能吗?

我希望以更简单,更高效的方式对条件进行循环。任何人都可以想出一种方法来做到这一点吗?提前感谢您的帮助!!:)


OptVariableControle =np.array([])    

    j = 1

    for i in range (0,27):

        if  i == 2 :

            j = j+1

        if  i == 5:

            j = j+1

        if  i == 8:

            j = j+1

        if  i == 11:

            j = j+1

        if  i == 14:

            j = j+1

        if  i == 17:

            j = j+1

        if  i == 20:

            j = j+1

        if  i == 23:

            j = j+1

        OptVariableControle =np.append(OptVariableControle, 

                        (optionsActualise[i] + betas["beta" + str(j)]* (optionsActualise[i]-esperences[i])))

您好,我几乎不可能将所有代码都放在这里。但我可以确认beta是10个(1到10)个元素的字典,选项操作和幻影是形状的np.数组(27,)。


最后让它与它一起工作:


betas_arr1 = np.array([betas[f'beta{j}'] for j in range(0, 9)])

OptVariableControle =np.array([])    



OptVariableControle = optionsActualise + betas_arr1[np.arange(0, 27) // 3] * (optionsActualise - esperences)

我希望这已经足够了


繁华开满天机
浏览 87回答 2
2回答

动漫人物

第一个预处理是大小合理的稀疏数组。我假设它是字典或类似的映射:betasbetas_arr = np.array([betas[f'beta{j}'] for j in range(1, 10)])接下来,请注意,每当 递增。的数组化也会将索引更改为以 0 开头。这意味着对于任何给定的 ,只是 。ji + 1 % 3 == 0betasjij(i + 1) // 3假设 和 是 numpy 数组,则可以在没有循环的情况下进行计算:optionsActualiseesperancesOptVariableControleOptVariableControle = optionsActualise + betas[np.arange(1, 28) // 3] * (optionsActualise - esperences)

慕娘9325324

可以使用模数 (%)运算符。当您检查一个数字并且如果为真时,您希望按1递增。这里有一个模式,你正在检查的数字在除以3时得到2的余数,下面是如何实现这个模式逻辑,使检查更简单,高效和紧凑:ijOptVariableControle =np.array([])        j = 1    # Replaced 27 by 26 here, as you do not want j to change when i is 26    for i in range (0,26):        if  i %3 == 2 :            j = j+1        OptVariableControle =np.append(OptVariableControle,                         (optionsActualise[i] + betas["beta" + str(j)]* (optionsActualise[i]-esperences[i])))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python