提问人:accordion1234 提问时间:11/8/2023 最后编辑:accordion1234 更新时间:11/8/2023 访问量:29
通过 numpy 对循环进行矢量化,以实现 qlearner/dyna-q
Vectorizing a loop via numpy for qlearner/dyna-q implementation
问:
我有一个 100 x 4 大小的 2d numpy 数组 A(q 表)和另一个数组 B(体验表),它不断更新一个 4 元素元组(代表状态、操作、state_prime、奖励)。我需要从数组 B 中随机选择一行,提取 4 个元素,然后运行一个函数 update(s, a, s', r),以 4 个元素作为参数更新数组 A。我需要这样做 x 次。
我目前的实现涉及 for 循环和 python 列表:
array B = []
given s, a, s', r
B.append(s, a, s', r)
for i in range x:
r = random.choice(B)
update(r[0], r[1], r[2], r[3])
我想摆脱 for 循环并矢量化解决方案,但前提是它比使用 python 列表更快。我尝试为 B 创建一个空的 np.array([]),创建一个 (0, 4) 大小的 np 数组和 vstacking、shuffling 等。但是我目前使用 python 列表的方式是迄今为止最快的。
编辑1:我不知道将B的行初始化为什么,因此我不能使用索引来写入元组。
答: 暂无答案
评论
B
np.zeros((100,4))
empty({})
update
update