[英]Python mean of subset of a list
我想从清单中获得一个清单。 为了演示,在我的示例中,我有一个名为listA的列表。
listA = [1,7,8,9,0,7,8,9,9,3,5,3,4,5,3]
现在,我想创建一个均值列表,再加上另一个列表,我必须指定要取均值的索引范围。 我使用indexmeans来做到这一点:
indexmeans = [3, 4,3,5]
因此,我想要的均值列表将采用listA的前“ 3”个数字,其均值为5.333。 然后,我取那[9,0,7,8]之后的4个数字,取它们的平均值,得出我的平均值为6。依此类推...确切地,所有数字都应被用作sum(indexmeans) = len(listA)
means = [ 5.333, 6, 7, 4]
我将使用scipy.cumsum
来保留索引的累积列表。 然后,您可以zip
该列表以找到相应的开始和结束索引,同时在第一个开始索引的前面添加0
。 有了这些,您可以使用numpy.mean
计算每个切片的平均值。
>>> from numpy import mean
>>> from scipy import cumsum
>>> indexes = cumsum([0] + indexmeans)
>>> [mean(listA[i:j]) for i,j in zip(indexes[:-1], indexes[1:])]
[5.333333333333333, 6.0, 7.0, 4.0]
这是使用标准库的一种方法。
from __future__ import division
lst = [1,7,8,9,0,7,8,9,9,3,5,3,4,5,3]
indexmeans = [3, 4,3,5]
assert sum(indexmeans) == len(lst)
lst_copy = lst[:]
means = [sum(lst_copy.pop(0) for _ in range(i)) / i for i in indexmeans]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.