Vectorization of _munp can be done like this

    def _munp(self, n, c):
        def __munp(n, c):
            val = 0.0
            k = arange(0, n + 1)
            for ki, cnk in zip(k, comb(n, k)):
                val = val + cnk * (-1) ** ki / (1.0 - c * ki)
            return where(c * n < 1, val * (-1.0 / c) ** n, inf)
        munp = lambda c: __munp(n, c)
        return _lazywhere(c != 0, (c,), munp, gam(n + 1))