创建具有固定大小的列表或数组?

mar*_*ray 2 python numpy

我想创建一个数组或列表,在任何给定时间只包含3个条目.该函数应循环并且每个循环1条目将被添加到列表中,将最旧的值输出,然后将根据列表中的3个值计算值.

我试过了:

import numpy as np

z = np.ndarray((3,),float)

np.append(z, [12, 14.56, 12.46, 1.56])
Run Code Online (Sandbox Code Playgroud)

这会创建一个只有3个值(afaik)的numpy数组,但是数组中填充了奇怪的值:

z= ([  1.56889217e-163,   1.01899555e-297,   1.03395110e-297])
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么/我做错了什么或者有更好的解决方案我想做什么?

Bi *_*ico 5

使用deque:

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
Run Code Online (Sandbox Code Playgroud)

您也可以appendleftextendleft一个双端队列,如果你需要.