计算Python2.7中列表最后X个元素的平均值

计算Python2.7中列表最后X个元素的平均值,python,numpy,mean,Python,Numpy,Mean,是否有一种优雅的方法或函数来计算列表中最后X个元素的平均值 我有一个列表寄存器,它在每次迭代时都会增加: register = np.append(register, value) 我想创建另一个列表,其中I元素对应于X寄存器中最后一个元素的平均值 register_mean[i] = np.mean(register[i-X:i]) 棘手的部分是第一次X迭代,此时register中还没有X值。对于这些特定情况,我希望它计算寄存器的第一个值的平均值,并仅将寄存器的第一个值作为寄存器_mean

是否有一种优雅的方法或函数来计算列表中最后X个元素的平均值

我有一个列表
寄存器
,它在每次迭代时都会增加:

register = np.append(register, value)
我想创建另一个列表,其中
I
元素对应于
X
寄存器中最后一个元素的平均值

register_mean[i] = np.mean(register[i-X:i])
棘手的部分是第一次
X
迭代,此时
register
中还没有
X
值。对于这些特定情况,我希望它计算
寄存器
的第一个值的平均值,并仅将
寄存器
的第一个值作为
寄存器_mean
的第一个值

这可以在迭代过程中完成,也可以在
寄存器完成后完成

我知道有很多类似的问题,但还没有找到一个能回答这个问题的


可能是像这样简单的事情吗

if X < i:
 register_mean[i] = np.mean(register[:i])
如果X
这只是平均之前有多少点,直到你有足够的平均X点


也许我误解了你的意图

可能是像这样简单的事情吗

if X < i:
 register_mean[i] = np.mean(register[:i])
如果X
这只是平均之前有多少点,直到你有足够的平均X点


也许我误解了你的意图

如果我正确理解了您的问题,这应该可以完成以下工作:

X = 4 # Span of mean
register_mean = [np.mean(register[max(i-X, 0): max(i-X, 0) + 1]) for i in range(len(register))]

它将在
i-X
i
之间创建
寄存器
元素的移动平均值;但是,每当
i-X
为负值时,它将只取
0
i+1

之间的值。如果我正确理解了您的问题,这应该可以完成以下工作:

X = 4 # Span of mean
register_mean = [np.mean(register[max(i-X, 0): max(i-X, 0) + 1]) for i in range(len(register))]

它将在
i-X
i
之间创建
寄存器
元素的移动平均值;然而,每当
i-X
为负值时,它将只取
0
i+1
之间的值。你能给我们一个可以运行的示例代码段吗?你能给我们一个可以运行的示例代码段吗?实际上,如果你只是在列表中添加,你甚至不需要[:i]。列表的长度实际上是i,如果您只是添加到列表中,您甚至不需要[:i]。该列表的长度是:指定从
寄存器中选取值的范围的上限不应该是
max(i,0)+1
?指定从
寄存器中选取值的范围的上限不应该是
max(i,0)+1