我有一个for循环,我每个月都会生成一些随机的每日值。我需要确保生成的月平均值应该等于观察到的平均值(在不同的数据框中提供)。因此,我需要运行此for循环,直到生成所需的值,然后再次运行下个月。
我有示例代码,但不知道如何运行它几次,直到获得所需的值:
for j in np.arange(1,13,1):
# calculating monthly leanth from provided datasets
mlen = ((df_test[df_test.index.year==2000]).index.month==j).sum()
# fit to my distribution
phat = stats.exponweib.fit((df_test[df_test.index.month==j].mean(axis=1)).dropna())
# predicting based on the fitted distribution
esti = stats.exponweib.rvs(*phat,int(mlen))
if esti.mean() == monthly_mean[0]
其中monthly_mean是观察到的月平均值,如下图所示,其中第一个月的第一个值。
monthly_mean = array([ 5.15 , 5.948571, 7.028261, 4.144231, 3.585965,
5.244828, 4.915455, 4.757 , 5.803614, 12.573684,
5.683333, 3.875 ])
任何帮助/建议都非常受欢迎!
答案 0 :(得分:2)
您可以使用标记来检查何时必须停止搜索
flag = True
while (flag):
for j in np.arange(1,13,1):
# calculating monthly leanth from provided datasets
mlen = ((df_test[df_test.index.year==2000]).index.month==j).sum()
# fit to my distribution
phat = stats.exponweib.fit((df_test[df_test.index.month==j].mean(axis=1)).dropna())
# predicting based on the fitted distribution
esti = stats.exponweib.rvs(*phat,int(mlen))
if esti.mean() == monthly_mean[0]:
flag = False
由于您需要每月检查一次,因此您可以将if嵌入for循环
for month_thingy in monthly_mean:
if esti.mean() == month_thingy:
flag = False