code: def replaceMaskedValueWithFloat(data, mask, replacementValue, copyOnReplace=True):
      
      kind = data.dtype.kind
      if kind == 'i' or kind == 'u': # signed/unsigned int
          data = data.astype(np.float, casting='safe')
  
      if data.dtype.kind != 'f':
          return # only replace for floats
      else:
          return replaceMaskedValue(data, mask, replacementValue, copyOnReplace=copyOnReplace)
docs: Replaces values where the mask is True with the replacement value.
  
          Will change the data type to float if the data is an integer.
          If the data is not a float (or int) the function does nothing. Otherwise it will call
          replaceMaskedValue with the same parameters.
  
          :copyOnReplace makeCopy: If True (the default) it makes a copy if data is replaced.