繁体   English   中英

列表子集的Python平均值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM