.append方法正在替换值

时间:2019-02-25 17:55:36

标签: python

我正在尝试通过循环生成一个rmse值的方法来创建一个rmse值数组。我可以理解为什么附加的值最终会替换整个数组。但是,我不确定如何更改它以使其工作...

这是代码:

preds = np.asarray(prediction_Arr)
GSPC = pdr.get_data_yahoo('^GSPC', 
    start=datetime.datetime(2019, 1, 1), 
    end=datetime.datetime(2019, 1, 31))
real = np.asarray(GSPC['Close'][0:])
rmse=np.sqrt(np.mean(np.power((real - preds),2)))
print(rmse)
rmse_values.append(rmse)
print(rmse_values)

这是要求的最低限度的完整验证:

b = []
x = 1
for f in range(0,3):
    x = x + 1
    print(x)

b.append(x)

如果我执行“打印(b)” 我得到[4]

但是我想看[2,3,4],我希望数组包含x在范围内的所有值。

希望这很清楚

2 个答案:

答案 0 :(得分:0)

也许rmse_values是在循环范围内定义的,因此它不是替换值,而是在每次迭代中重新定义。

您需要在循环之外定义它,使用您的代码(有一些假设),就像这样:

rmse_values = []
for prediction_Arr in prediction_Arrs:
  preds = np.asarray(prediction_Arr)
  GSPC = pdr.get_data_yahoo('^GSPC', 
      start=datetime.datetime(2019, 1, 1), 
      end=datetime.datetime(2019, 1, 31))
  real = np.asarray(GSPC['Close'][0:])
  rmse = np.sqrt(np.mean(np.power((real - preds),2)))
  print(rmse)
  rmse_values.append(rmse)

print(rmse_values)

答案 1 :(得分:0)

您不会在循环内添加

b = []
x = 1
for f in range(0,3):
    x = x + 1
    print(x)
    b.append(x) #this needs to be inside the loop. 
print b