code: def _exec_loop(self, a, bd_all, mask):
          
  
          npt = bd_all.shape[0]
          n = self.X_ADJUSTED.shape[0]
          kvalues = np.zeros(npt)
          sigmasq = np.zeros(npt)
  
          a_inv = scipy.linalg.inv(a)
  
          for j in np.nonzero(~mask)[0]:   # Note that this is the same thing as range(npt) if mask is not defined,
              bd = bd_all[j]               # otherwise it takes the non-masked elements.
              if np.any(np.absolute(bd) <= self.eps):
                  zero_value = True
                  zero_index = np.where(np.absolute(bd) <= self.eps)
              else:
                  zero_value = False
                  zero_index = None
  
              b = np.zeros((n+1, 1))
              b[:n, 0] = - self.variogram_function(self.variogram_model_parameters, bd)
              if zero_value:
                  b[zero_index[0], 0] = 0.0
              b[n, 0] = 1.0
  
              x = np.dot(a_inv, b)
              kvalues[j] = np.sum(x[:n, 0] * self.VALUES)
              sigmasq[j] = np.sum(x[:, 0] * -b[:, 0])
  
          return kvalues, sigmasq
docs: Solves the kriging system by looping over all specified points.
          Less memory-intensive, but involves a Python-level loop.