Я часто использую  mask Pandas и  where методы для более чистой логики при обновлении значений в серии условно. Однако для относительно критически важного кода я замечаю значительное падение производительности по сравнению с  numpy.where.
Хотя я рад принять это в конкретных случаях, мне интересно узнать:
-  
maskPandas/whereметоды предлагают какие-либо дополнительные функции, помимо параметровinplace/errors/try-cast? Я понимаю эти 3 параметра, но редко их использую. Например, я понятия не имею, к чему относится параметрlevel. -  Есть ли нетривиальный встречный пример, где 
mask/whereпревосходитnumpy.where? Если такой пример существует, это может повлиять на то, как я выбираю подходящие методы, идущие вперед. 
Для справки, здесь некоторый бенчмаркинг по Pandas 0.19.2/Python 3.6.0:
np.random.seed(0)
n = 10000000
df = pd.DataFrame(np.random.random(n))
assert (df[0].mask(df[0] > 0.5, 1).values == np.where(df[0] > 0.5, 1, df[0])).all()
%timeit df[0].mask(df[0] > 0.5, 1)       # 145 ms per loop
%timeit np.where(df[0] > 0.5, 1, df[0])  # 113 ms per loop
 Похоже, что производительность отличается от нескалярных значений:
%timeit df[0].mask(df[0] > 0.5, df[0]*2)       # 338 ms per loop
%timeit np.where(df[0] > 0.5, df[0]*2, df[0])  # 153 ms per loop