Эффективно расширяйте цифровую маску на n ячеек вправо для каждого плохого значения

Допустим, у меня есть массив длиной 30 с 4 неверными значениями. Я хочу создать маску для этих плохих значений, но так как я буду использовать функции скользящего окна, я бы также хотел, чтобы фиксированное число последующих индексов после каждого плохого значения было помечено как плохое. Ниже n = 3:

enter image description here

Я хотел бы сделать это максимально эффективно, потому что эта процедура будет выполняться много раз на больших рядах данных, содержащих миллиарды точек данных. Таким образом, мне нужно максимально приближенное к крошечному векторизованному решению, потому что я бы хотел избежать петель Python.

Для избежания перепечатывания, вот массив:

import numpy as np
a = np.array([4, 0, 8, 5, 10, 9, np.nan, 1, 4, 9, 9, np.nan, np.nan, 9,\
              9, 8, 0, 3, 7, 9, 2, 6, 7, 2, 9, 4, 1, 1, np.nan, 10])

8
задан Thomas Browne 22 September 2015 в 22:04
поделиться