def logpmf(self, k, *args, **kwds):
args, loc, _ = self._parse_args(*args, **kwds)<EOL>k, loc = map(asarray, (k, loc))<EOL>args = tuple(map(asarray, args))<EOL>k = asarray((k-loc))<EOL>cond0 = self._argcheck(*args)<EOL>cond1 = (k >= self.a) & (k <= self.b) & self._nonzero(k, *args)<EOL>cond = cond0 & cond1<EOL>output = empty(shape(cond), '<STR_LIT:d>')<EOL>output.fill(NINF)<EOL>place(output, (<NUM_LIT:1>-cond0) + np.isnan(k), self.badvalue)<EOL>if any(cond):<EOL><INDENT>goodargs = argsreduce(cond, *((k,)+args))<EOL>place(output, cond, self._logpmf(*goodargs))<EOL><DEDENT>if output.ndim == <NUM_LIT:0>:<EOL><INDENT>return output[()]<EOL><DEDENT>return output<EOL>
Log of the probability mass function at k of the given RV.

Parameters
----------
k : array_like
    Quantiles.
arg1, arg2, arg3,... : array_like
    The shape parameter(s) for the distribution (see docstring of the
    instance object for more information).
loc : array_like, optional
    Location parameter. Default is 0.

Returns
-------
logpmf : array_like
    Log of the probability mass function evaluated at k.