我正在努力创建一个移动窗口求和函数,该函数计算给定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]
运气好,但无济于事。
任何帮助将不胜感激。
答案 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))