Решение проблемы, описанной в теле вопроса:
def asfarray_option(siter: Iterable[str]) -> Optional[np.ndarray]:
return np.fromiter(map(lambda v: v or 'nan', siter),dtype=float)
Решение проблемы, описанной в заголовке вопроса:
def asfarray_option(match:str,replace:Any,siter:Iterable[str]) -> Optional[np.ndarray]:
return np.fromiter(map(lambda v: replace if v == match else v, siter),dtype=float)
Нет смысла делать что-либо, кроме точного соответствия внутри python для этой задачи. Используйте sed для очистки ваших данных снаружи. Это будет быстрее, чем практически все, что вы можете сделать. Распараллелить с:
parallel --pipe -k -j 40 sed 's/<your_regular_expression>//g' < file.csv
# --pipe maintains 40 compiled posix pthread fifoq's
# -k maintains order of IO
# -j job count