Python队列
[需要解读的源代码出处:
https://www.bilibili.com/video/BV1U341127k5/?p=2&vd_source=6b3f04503eefbf2a2e91a1912ce6a6e0](https://www.bilibili.com/video/BV1U341127k5/?p=2&vd_source=6b3f04503eefbf2a2e91a1912ce6a6e0)
## 设定记忆天数
mem_his_days = 5
deq = deque(maxlen=mem_his_days)
'''
In:
sca_X.shape
Out:
(4275, 5)
'''
X = []
for i in sca_X:
deq.append(list(i))
if len(deq) == mem_his_days:
X.append(list(deq))
代码解读:
# 样本数据
sca_X = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
mem_his_days = 5
deq = deque(maxlen=mem_his_days)
X = []
03.查看内部结构
3.1 创建空队列
deq = deque(maxlen=5)
3.2 迭代’sca_X’ 的每个元素,将其添加到队列中
# 添加元素1
deq.append([1])
Queue: [1]
# 添加元素2
deq.append([2])
Queue: [1, 2]
# 添加元素3
deq.append([3])
Queue: [1, 2, 3]
# 添加元素4
deq.append([4])
Queue: [1, 2, 3, 4]
# 添加元素5
deq.append([5])
Queue: [1, 2, 3, 4, 5]
# 队列已满,添加到X列表中
X: [[1, 2, 3, 4, 5]]
# 添加元素6,先进先出,元素1被移出队列
deq.append([6])
Queue: [2, 3, 4, 5, 6]
# 添加元素7
deq.append([7])
Queue: [2, 3, 4, 5, 7]
# 添加元素8
deq.append([8])
Queue: [2, 3, 4, 5, 8]
# 添加元素9
deq.append([9])
Queue: [2, 3, 4, 5, 9]
# 添加元素10,队列已满,添加到X列表中
X: [[1, 2, 3, 4, 5], [2, 3, 4, 5, 9]]
04.完整实验:
4.1 单个list
In:
# 此时将
sca_X = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
mem_his_days = 5
deq = deque(maxlen=mem_his_days)
X = []
for i in sca_X:
deq.append(i)
# 只要超过 天就先进先出
if len(deq) == mem_his_days:
X.append(list(deq))
display(X)
Out:
[[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7],
[4, 5, 6, 7, 8],
[5, 6, 7, 8, 9],
[6, 7, 8, 9, 10]]
4.2 多个list【二维】
In:
sca_X = [[11,12,13,14,15],
[21,22,23,24,25],
[31,32,33,34,35],
[41,42,43,44,45],
[51,52,53,54,55],
[61,62,63,64,65],
[71,72,73,74,75],
[81,82,83,84,85],
[91,92,93,94,95],
[101,102,103,104]]
mem_his_days = 5
deq = deque(maxlen=mem_his_days)
X = []
for i in sca_X:
deq.append(list(i))
# 只要超过 天就先进先出
if len(deq) == mem_his_days:
X.append(list(deq))
display(X)
Out:
[[[11, 12, 13, 14, 15],
[21, 22, 23, 24, 25],
[31, 32, 33, 34, 35],
[41, 42, 43, 44, 45],
[51, 52, 53, 54, 55]],
[[21, 22, 23, 24, 25],
[31, 32, 33, 34, 35],
[41, 42, 43, 44, 45],
[51, 52, 53, 54, 55],
[61, 62, 63, 64, 65]],
[[31, 32, 33, 34, 35],
[41, 42, 43, 44, 45],
[51, 52, 53, 54, 55],
[61, 62, 63, 64, 65],
[71, 72, 73, 74, 75]],
[[41, 42, 43, 44, 45],
[51, 52, 53, 54, 55],
[61, 62, 63, 64, 65],
[71, 72, 73, 74, 75],
[81, 82, 83, 84, 85]],
[[51, 52, 53, 54, 55],
[61, 62, 63, 64, 65],
[71, 72, 73, 74, 75],
[81, 82, 83, 84, 85],
[91, 92, 93, 94, 95]],
[[61, 62, 63, 64, 65],
[71, 72, 73, 74, 75],
[81, 82, 83, 84, 85],
[91, 92, 93, 94, 95],
[101, 102, 103, 104]]]