高效初始化双端队列

问题描述 投票:0回答:1

我正在使用

deque
来存储将要处理的数据。处理仅在双端队列已满时开始,因此第一步我按以下方式填充缓冲区:

from collections import deque
import numpy as np

my_deque = deque(maxlen=10)
dims = (20, 20)
my_deque.extend([np.ones(dims)] * 10)

但是,当我这样做并修改

my_deque
的其中一个元素时,
my_deque
的所有元素都会被修改。

我发现避免此问题的一种替代方法是按以下方式初始化我的

deque

for i in range(10):
    my_deque.append(np.ones(dims))

有没有更优雅的方法来实现这一点?

编辑:造成问题的一个修改示例如下

my_deque[7][2, :] = 0

在这行代码之后,

my_deque
的每个元素的第三行都是一行零,而不仅仅是索引 7 处的零

python numpy copy deque
1个回答
0
投票

@MichaelSzczesny 的评论是正确的答案,它似乎已被删除,所以我将其发布在这里:

from collections import deque
import numpy as np

my_deque = deque(maxlen=10)
dimensions = (10, 20, 20)
my_deque.extend(np.ones(dimensions))
© www.soinside.com 2019 - 2024. All rights reserved.