我希望以一种更简单、更高效的方式使用条件进行循环。有人能想出一个办法吗?提前感谢您的帮助!!:)
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])))
你好,我几乎不可能把我所有的代码都放在这里。但我可以确认betas是一个包含10(1到10)个元素的字典,OptionsRealize和Esperans是np.array of shape(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)
我希望这足够了
您可以使用模数(%)运算符。当您用一个数字检查
i
时,如果是真的,您希望将j
增加1。这里有一个模式,您正在检查的数字在除以3时给出2的余数,下面是如何实现此模式逻辑以使检查更简单、高效和紧凑:第一个预处理
betas
是一个大小合理的numpy数组。我假设它是一个字典或类似的映射:接下来,请注意,每当
i + 1 % 3 == 0
时,您都会增加j
。数组betas
也将索引j
更改为以0开头。这意味着对于任何给定的i
,j
就是(i + 1) // 3
假设
optionsActualise
和esperances
是numpy数组,您可以在不使用循环的情况下计算OptVariableControle
:相关问题 更多 >
编程相关推荐