def repeat_or(a, n=4):
    m = np.isnan(a)
k = m.copy()
lenM, lenK = 1, 1
while lenM + lenK < n:
    m[lenM:] |= k[:-lenM]
m, k = k, m
lenM, lenK = lenK, lenM + lenK
k[n - lenM:] |= m[:-n + lenM]
return k
Расширьте маску numpy на n ячеек вправо для каждого неправильного значения, эффективно