簡體   English   中英

在Python中獲取索引滑動窗口的總和

[英]Taking the sum of a sliding window of indices in python

我環顧四周,但無法找出我的代碼為什么失敗以及如何正確執行。 我是編碼新手(三天),所以請原諒我的笨拙。

我從整數列表開始,從本質上講,我想創建一個新列表或更新列表,其中新列表的第一個索引的值=原始列表的前10個值的總和(0-10),然后是新列表列表的第二個索引的值=原始列表的(1-11)索引值的總和。

問題在於它錯誤地添加了所有內容,並且以某種方式使我還無法弄清楚模式。

這是我所擁有的:

def sum_range(filename, grouping = 10):
    """sums up the ss values for 'groupings' numbers of indices.
    Shows ALL results, regardless of how high or low strandedness is"""

    sslist = ssc_only(filename)
    # "ssc_only(filename)" takes my input and returns it as a list of int,
    # which I want to use for this function

    sslist = [sum(sslist[i:i+grouping]) for i in sslist]

    return sslist

我認為您可能想要for i in range(len(sslist))使用for i in range(len(sslist))如果您擔心內存消耗,請使用xrange代替python 2中的range )。

lstlen=len(sslist)
sslist = [sum(sslist[i:min(i+grouping,lstlen)]) for i in range(lstlen)]

您正在遍歷列表項,而不是遍歷列表索引

當然,您的最后10個元素將是少於10個元素的總和。 因為我不知道您想對這些元素做什么,所以我將留給您了解您想對它們做些什么。

不要以為您的求和是正確的...同樣,如果您要組成10個一組,則樣本數將比原始列表少10個-這在下面的表達式中給出len(r) - 10

>>> r = range(20)
>>> r
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> [sum(r[n:10+n]) for n in range(len(r)-10)]
[45, 55, 65, 75, 85, 95, 105, 115, 125, 135]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM