code: def row_wise_rescale(matrix):
      
  
      if matrix.shape[0] <= matrix.shape[1]:
          raise ValueError('Number of voxels is less than the number of time points!! '
                        'Are you sure data is reshaped correctly?')
  
      min_ = matrix.min(axis=1)
      range_ = matrix.ptp(axis=1)  # ptp : peak to peak, max-min
      min_tile = np.tile(min_, (matrix.shape[1], 1)).T
      range_tile = np.tile(range_, (matrix.shape[1], 1)).T
      # avoiding any numerical difficulties
      range_tile[range_tile < np.finfo(np.float).eps] = 1.0
  
      normed = (matrix - min_tile) / range_tile
  
      del min_, range_, min_tile, range_tile
  
      return normed
docs: Row-wise rescale of a given matrix.
  
      For fMRI data (num_voxels x num_time_points), this would translate to voxel-wise normalization over time.
  
      Parameters
      ----------
  
      matrix : ndarray
          Input rectangular matrix, typically a carpet of size num_voxels x num_4th_dim, 4th_dim could be time points or gradients or other appropriate
  
      Returns
      -------
      normed : ndarray
          normalized matrix