Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—遍历一个列表,每第n次迭代将n个值附加到一个向量_Python_Iterator_Reinforcement Learning_Sliding Window - Fatal编程技术网

Python—遍历一个列表,每第n次迭代将n个值附加到一个向量

Python—遍历一个列表,每第n次迭代将n个值附加到一个向量,python,iterator,reinforcement-learning,sliding-window,Python,Iterator,Reinforcement Learning,Sliding Window,我正在处理一个深度强化学习问题,我需要向我的代理提供的状态包含在一个二进制数向量中 列表如下所示: [7.0, 1.0, 1.0, 0.0, 1.0, 5.0, 0.0, 1.0, 0.0, 1.0, 7.0, 1.0, 1.0, 0.0, 1.0, 6.0, 1.0, 0.0, 1.0, 0.0] 然而,我的问题的每个完整状态都包含在每第五次迭代中。样本数据中的完整状态示例如下: [[7. 1. 1. 0. 1.]] [[5. 0. 1. 0. 1.]] [[7. 1. 1. 0. 1.

我正在处理一个深度强化学习问题,我需要向我的代理提供的状态包含在一个二进制数向量中

列表如下所示:

[7.0, 1.0, 1.0, 0.0, 1.0, 5.0, 0.0, 1.0, 0.0, 1.0, 
 7.0, 1.0, 1.0, 0.0, 1.0, 6.0, 1.0, 0.0, 1.0, 0.0]
然而,我的问题的每个完整状态都包含在每第五次迭代中。样本数据中的完整状态示例如下:

[[7. 1. 1. 0. 1.]]
[[5. 0. 1. 0. 1.]]
[[7. 1. 1. 0. 1.]]
[[6. 1. 0. 1. 0.]]
我尝试过创建一个解析器函数,类似于滑动窗口,它应该每5次迭代捕获5个值

def getState(data, timestep, window):
    parser_start = timestep - window + 1
    block = data[parser_start:timestep + 5] if parser_start >= 0 else data[0:timestep + 5] # pad with t0
    res = []
    for i in range(window - 1):
        res.append(block[i])

    return np.array([res])
然后实现到类型的for循环中:

window_size = 5    
for t in range(10):
        next_state = getState(data, t + 4, window_size + 1)    
        print(next_state)
但是,当运行循环时,我得到的结果是:

[[7. 1. 1. 0. 1.]]
[[1. 1. 0. 1. 5.]]
[[1. 0. 1. 5. 0.]]
[[0. 1. 5. 0. 1.]]
[[1. 5. 0. 1. 0.]]
[[5. 0. 1. 0. 1.]]
[[0. 1. 0. 1. 7.]]
[[1. 0. 1. 7. 1.]]
[[0. 1. 7. 1. 1.]]
[[1. 7. 1. 1. 0.]]
它似乎附加了一个滑动窗口1,而不是5。我已经试了几个星期了,但是我找不到问题出在哪里


你们有什么新想法吗?

窗户的大小应该是一致的

[data[i:i+5] for i in range(0,len(data),5)]

[[7.0, 1.0, 1.0, 0.0, 1.0],
 [5.0, 0.0, 1.0, 0.0, 1.0],
 [7.0, 1.0, 1.0, 0.0, 1.0],
 [6.0, 1.0, 0.0, 1.0, 0.0]]

您是否正在尝试完成此操作:?因此,快速且肮脏:
[data[i:i+5]代表范围内的i(0,len(data),5)]
谢谢您的评论,但不幸的是,我无法将其插入滑动窗口循环。我正在寻找在每次迭代中上传我的东西(在你的例子中)。因此,如果我在第一次迭代中是数据[0:5],在第二次迭代中,我需要它也是数据[5:10],指出我需要4个不同的数组,而不是一个包含所有向量的大数组,这可能是有用的。。。。然后不要具体化列表,只需循环显示如果这是OP要求的,那么这是一个明显的重复,请投票关闭而不是回答。感谢评论,但不幸的是,我无法将其插入滑动窗口循环。或者我不明白为什么(我对python编程相当陌生)。我正在寻找在每次迭代中上传我的东西(在你的例子中)。所以,如果我在第一次迭代中是数据[0:5],在第二次迭代中,我需要它是数据[5:10],换句话说,我需要4个不同的数组,而不是一个包含所有向量的大数组