首页 > 解决方案 > 结果取决于python中的其他结果

问题描述

我有一个名为 1000 个观察的动作的数组;从099表示100观察是随机进行的,然后我想根据称为 R 的 2 列矩阵计算操作值,该矩阵取决于操作值。我收到了这个错误

Traceback (most recent call last)
<ipython-input-21-930470b1de32> in <module>()
     19 print(R)
     20 for i in range(100,999,1):
---> 21     if R[i-1,0]>R[i-1,1]:
     22         action[i]=1
     23     else:
IndexError: index 99 is out of bounds for axis 0 with size 99

编码:

import numpy as np
from numpy import random
import random

action=np.zeros((1000))
def reward(action,i,n):
    R=np.zeros((n,2))
    for i in range (i,n,1):
        if action[i]==1:
            R[i,0]= 1+action[i]/2
        else:
            R[i,1]=1+action[i]/2
    return R
random.seed(771)
for i in range (0,99,1):
        action[i]=random.randint(1,2)
print(action[0:99])
R=reward(action,0,99)
print(R)       
for i in range(100,999,1):
    if R[i-1,0]>R[i-1,1]:
        action[i]=1
    else:
        action[i]=2
    R=reward(action,100,999)

标签: pythonnumpy

解决方案


R=reward(action,0,99)创建一个包含 99 个元素的列表:

>>> len(R)
99

那么当你跑步时

for i in range(100,999,1):
    if R[i-1,0]>R[i-1,1]:

这将生成从 99 开始的索引,但 R 的最后一个索引是 98(从 0 到 98,因此长度为 99)。

尝试:for i in range(99,1000,1):


推荐阅读