python - 创建一个固定大小的列表或数组?

标签 python numpy

我想创建一个在任何给定时间只包含 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

如果需要,您还可以在双端队列上使用 appendleftextendleft

关于python - 创建一个固定大小的列表或数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16429373/

相关文章:

python - 找到包含所有数字的最小长度子数组

python - 根据另一个整数列表中的重复项更新整数列表的最快方法

python - 将列表写入 python 中的 CSV 列时出错

python - Pyqt5 - 网格布局行为不当

python - numpy 数组中的索引混淆

Python 将列表转换为二维 numpy 数组

python - 找到numpy数组之间差异最小的位置

numpy - 在另一个更大的数组中插入 3D 数组的值的最佳方法

python - 将字符串与数据库字段匹配django

python - 使用 Django ModelField 选择作为字符串的枚举——反模式?