docs: def rescale(self, fun):
          """
          perform raster computations with custom functions and assign them to the existing raster object in memory
  
          Parameters
          ----------
          fun: function
              the custom function to compute on the data
  
          Examples
          --------
          >>> with Raster('filename') as ras:
          >>>     ras.rescale(lambda x: 10 * x)
  
          """
          if self.bands != 1:
              raise ValueError('only single band images are currently supported')
          
          # load array
          mat = self.matrix()
          
          # scale values
          scaled = fun(mat)
          
          # assign newly computed array to raster object
          self.assign(scaled, band=0)