In numpy, np.maximum(NaN, 2) returns NaN, but in C, fmax(Nan, 2) returns 2. Numexpr maximum/minimum calls the C-routine and doesn't perform any checks. Should be enough to just replace the functions via something like
{x if isnan(x), y if isnan(y) else fmin(x,y)}.