我想创建一个在任何给定时间只包含 3 个条目的数组或列表。该函数应该循环,每次循环都会将 1 个条目添加到列表中,将最旧的值推出,然后根据列表中的 3 个值计算一个值。
我试过:
import numpy as np
z = np.ndarray((3,),float)
np.append(z, [12, 14.56, 12.46, 1.56])
它创建了一个只有 3 个值的 numpy 数组(afaik),但是该数组填充了奇怪的值:
z= ([ 1.56889217e-163, 1.01899555e-297, 1.03395110e-297])
有人知道我为什么/哪里做错了,或者对我想做的事情有更好的解决方案吗?
最佳答案
使用双端队列
:
from collections import deque
z = deque(maxlen=3)
z.extend([1, 2, 3, 4])
print z
# deque([2, 3, 4], maxlen=3)
z.append(5)
# deque([3, 4, 5], maxlen=3)
print z
如果需要,您还可以在双端队列上使用 appendleft
和 extendleft
。
关于python - 创建一个固定大小的列表或数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16429373/