docs: def _getp(self):
          """ Build :class:`gvar.GVar`\s for best-fit parameters. """
          if self._p is not None:
              return self._p
          # buf = [y,prior]; D[a,i] = dp[a]/dbuf[i]
          pmean = _gvar.mean(self.palt).flat
          buf = (
              self.y.flat if self.prior is None else
              numpy.concatenate((self.y.flat, self.prior.flat))
              )
          D = numpy.zeros((self.cov.shape[0], len(buf)), float)
          for i, chivw_i in enumerate(self._chivw(_gvar.valder(pmean))):
              for a in range(D.shape[0]):
                  D[a, i] = chivw_i.dotder(self.cov[a])
  
          # p[a].mean=pmean[a]; p[a].der[j] = sum_i D[a,i]*buf[i].der[j]
          p = []
          for a in range(D.shape[0]): # der[a] = sum_i D[a,i]*buf[i].der
              p.append(_gvar.gvar(pmean[a], _gvar.wsum_der(D[a], buf),
                       buf[0].cov))
          self._p = _reformat(self.p0, p)
          return self._p