code: def eval_basis(self, x, regularize=True):
          
          # Make object of same shape as self.basis, fill in with evals of each individual basis factor.
          # Make object of same shape as diag(coef_cov), fill in with products of those evals.
          # Reshape and return.
          if regularize:
              x = regularize_array(x)
  
          out = zeros(self.shape + (x.shape[0],), dtype=float, order='F')
  
          # Evaluate the basis factors
          basis_factors = []
          for i in xrange(self.ndim):
              basis_factors.append([])
              for j in xrange(self.n_per_dim[i]):
                  basis_factors[i].append(self.basis[i][j](x, **self.params))
  
          out = ones((self.n, x.shape[0]), dtype=float)
          out_reshaped = out.reshape(self.shape + (x.shape[0],))
  
          for ind in ndindex(self.shape):
              for dim in xrange(self.ndim):
                  out_reshaped[ind] *= basis_factors[dim][ind[dim]]
  
          return out
docs: basis_mat = C.eval_basis(x)
  
          Evaluates self's basis functions on x and returns them stacked
          in a matrix. basis_mat[i,j] gives basis function i (formed by
          multiplying basis functions) evaluated at x[j,:].