docs: def build_maps(self, losses, clp, stats=()):
          """
          :param losses: an array of shape (A, R, P)
          :param clp: a list of C conditional loss poes
          :param stats: list of pairs [(statname, statfunc), ...]
          :returns: an array of loss_maps of shape (A, R, C, LI)
          """
          shp = losses.shape[:2] + (len(clp), len(losses.dtype))  # (A, R, C, LI)
          array = numpy.zeros(shp, F32)
          for lti, lt in enumerate(losses.dtype.names):
              for a, losses_ in enumerate(losses[lt]):
                  for r, ls in enumerate(losses_):
                      for c, poe in enumerate(clp):
                          clratio = conditional_loss_ratio(ls, self.poes, poe)
                          array[a, r, c, lti] = clratio
          return self.pair(array, stats)