Write a python function which does min-max normalization with provided values for min and max. Note that the provided values can be optional. Handle all edge cases and use numpy.