在布尔数组上移动窗口总和,并有步骤。

时间:2018-10-29 07:44:08

标签: python numpy

我正在努力创建一个移动窗口求和函数,该函数计算给定numpy布尔数组<faultstring>Unable to create envelope from given source: com.sun.xml.messaging.saaj.soap.dom4j.ElementImpl cannot be cast to com.sabre.universalservices.saaj.soap.Envelope</faultstring> 中的True值的数量,窗口大小为my_array并在跳转时n的步骤。

例如,考虑数组s

大小为my_array = [True, True, False, False, True, False, True]且具有步骤n = 2的移动窗口的总和应产生s = 2,请注意,最后一个窗口仅包含一个值。

我曾尝试result = [2, 0, 1, 1]运气好,但无济于事。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

自从您标记了numpy

my_array = [True, True, False, False, True, False, True]
n = 2
s = 2
result = np.convolve(my_array, np.ones(n, ), mode='valid')[::s]

答案 1 :(得分:1)

直接前进。 应该执行以下代码。

def fun(arr, n, s):
    res = []

    for i in range(0, len(arr), s):
        res.append(sum(arr[i:i+n]))

    return res

my_array = [True, True, False, False, True, False, True]
print(fun(my_array, 2, 2))