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))