我想从列表中获取资产清单。为了演示,在我的示例中,我有名为listA的列表。
listA = [1,7,8,9,0,7,8,9,9,3,5,3,4,5,3]
现在我想用另一个列表创建一个平均值列表,我必须指定我想要取的平均值的索引范围。我使用indexmeans来做到这一点:
indexmeans = [3, 4,3,5]
所以我想要的手段列表将采用第一个' 3' listA的数量,平均值为5.333。然后我在那之后拿出4个数字[9,0,7,8]并取其平均值给出我的平均值6.依此类推......所有数字都应该用作总和(indexmeans) = len(listA)
means = [ 5.333, 6, 7, 4]
答案 0 :(得分:2)
我会使用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]
答案 1 :(得分:1)
以下是使用标准库的方法。
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]