) Даны два массива одинаковой длины, один содержит данные, другой содержит результаты, но изначально установлен в ноль, например :
a = numpy.array([1, 0, 0, 1, 0, 1, 0, 0, 1, 1])
b = numpy.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
Я хочу вычислить сумму всех возможных подмножеств трех соседних элементов в a. Если сумма равна 0 или 1, три соответствующих элемента в b остаются неизменными, только если сумма превышает 1, три соответствующие элементы в b установлены в 1, так что после вычисления b становится
array([0, 0, 0, 1, 1, 1, 0, 1, 1, 1])
Простой цикл выполнит это:
for x in range(len(a)-2):
if a[x:x+3].sum() > 1:
b[x:x+3] = 1
После этого b имеет желаемую форму
Я должен сделать это для большого количества данные, так что скорость является проблемой.Есть ли в NumPy более быстрый способ выполнить описанную выше операцию?
(я понимаю, что это похоже на свертку, но не совсем то же самое).