为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁华开满天机 2022-09-20 17:36:23
我希望以更简单,更高效的方式对条件进行循环。任何人都可以想出一种方法来做到这一点吗?提前感谢您的帮助!!:)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)我希望这已经足够了
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

第一个预处理是大小合理的稀疏数组。我假设它是字典或类似的映射:betas

betas_arr = np.array([betas[f'beta{j}'] for j in range(1, 10)])

接下来,请注意,每当 递增。的数组化也会将索引更改为以 0 开头。这意味着对于任何给定的 ,只是 。ji + 1 % 3 == 0betasjij(i + 1) // 3

假设 和 是 numpy 数组,则可以在没有循环的情况下进行计算:optionsActualiseesperancesOptVariableControle

OptVariableControle = optionsActualise + betas[np.arange(1, 28) // 3] * (optionsActualise - esperences)



查看完整回答
反对 回复 2022-09-20
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

可以使用模数 (%)运算符。当您检查一个数字并且如果为真时,您希望按1递增。这里有一个模式,你正在检查的数字在除以3时得到2的余数,下面是如何实现这个模式逻辑,使检查更简单,高效和紧凑:ij


OptVariableControle =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])))



查看完整回答
反对 回复 2022-09-20
  • 2 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信