2 回答
TA贡献1815条经验 获得超10个赞
第一个预处理是大小合理的稀疏数组。我假设它是字典或类似的映射:betas
betas_arr = np.array([betas[f'beta{j}'] for j in range(1, 10)])
接下来,请注意,每当 递增。的数组化也会将索引更改为以 0 开头。这意味着对于任何给定的 ,只是 。j
i + 1 % 3 == 0
betas
j
i
j
(i + 1) // 3
假设 和 是 numpy 数组,则可以在没有循环的情况下进行计算:optionsActualise
esperances
OptVariableControle
OptVariableControle = optionsActualise + betas[np.arange(1, 28) // 3] * (optionsActualise - esperences)
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])))
添加回答
举报