code: def _scale_to_dtype(self, data, dtype):
          
          if np.issubdtype(dtype, np.integer):
              if np.issubdtype(data, np.integer):
                  # preserve integer data type
                  data = data.clip(np.iinfo(dtype).min, np.iinfo(dtype).max)
              else:
                  # scale float data (assumed to be 0 to 1) to full integer space
                  dinfo = np.iinfo(dtype)
                  data = data.clip(0, 1) * (dinfo.max - dinfo.min) + dinfo.min
              data = data.round()
          return data
docs: Scale provided data to dtype range assuming a 0-1 range.
  
          Float input data is assumed to be normalized to a 0 to 1 range.
          Integer input data is not scaled, only clipped. A float output
          type is not scaled since both outputs and inputs are assumed to
          be in the 0-1 range already.