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个不同的数组,而不是一个包含所有向量的大数组