class_docstr: Iterative estimation of row and column centering/scaling
  using the algorithm from page 31 of:
      Matrix Completion and Low-Rank SVD via Fast Alternating Least Squares
code: def rescale(self, X, row_scales, column_scales, inplace=False):
      if not inplace:
          X = X.copy()
      n_rows, n_cols = X.shape
      X /= row_scales.reshape((n_rows, 1))
      X /= column_scales.reshape((1, n_cols))
      return X
  
imports: import numpy
label_desc: Use image node_id 5 for calling the BiScaler obj's underlying member method code with example usage: obj.rescale(X, row_scales, column_scales, inplace) and returns: X