def de_mean_matrix(A): """returns the result of subtracting from everty value in A the mean value of its column, the resulting matri has mean 0 in every column""" nr, nc = matrix.shape(A) column_means, __ = scale(A) return matrix.make_mtr(nr, nc, lambda i, j: A[i][j] - column_means[j])
def rescale(data_matrix): """rescales the input data_raw so that each column has mean 0 and stdev1""" means, stdevs = scale(data_matrix) def rescaled(i,j): if stdevs[j]>0: return (data_matrix[i][j] - means[j])/stdevs[j] else: data_matrix[i][j] num_rows, num_cols = matrix.shape(data_matrix) return matrix.make_mtr(num_rows, num_cols, rescaled)