У меня есть массив np, скажем,
[1, 1, 1, 1, 0, 1, 0, 1, 0]
Теперь я хочу изменить число в index i s.t. это 0, если один из предыдущих n элементов был 1. Но это вычисление должно быть не статическим по отношению к исходному массиву, а динамическим, т.е. с учетом уже измененных значений. Допустим, n = 2, тогда я хочу получить
[1, 0, 0, 1, 0, 0, 0, 1, 0]
Как мне сделать это эффективно без цикла for?
Простая индексация будет выполняться по всему массиву за одну итерацию, игнорируя вновь измененные значения, что означает, что результат будет
[1, 0, 0, 0, 0, 0, 0, 0, 0]
право
Обновление:
В цикле я бы сделал это:
for i in range(a.shape[0]):
FoundPrevious = False
for j in range(n):
if i - j < 0:
continue
if a[i - j] == 1:
FoundPrevious = True
break
if FoundPrevious:
a[i] = 0