scipy.misc.logsumexp¶
- scipy.misc.logsumexp(a, axis=None, b=None)[source]¶
Compute the log of the sum of exponentials of input elements.
Parameters : a : array_like
Input array.
axis : int, optional
Axis over which the sum is taken. By default axis is None, and all elements are summed.
New in version 0.11.0.
b : array-like, optional
Scaling factor for exp(a) must be of the same shape as a or broadcastable to a.
New in version 0.12.0.
Returns : res : ndarray
The result, np.log(np.sum(np.exp(a))) calculated in a numerically more stable way. If b is given then np.log(np.sum(b*np.exp(a))) is returned.
See also
Notes
Numpy has a logaddexp function which is very similar to logsumexp, but only handles two arguments. logaddexp.reduce is similar to this function, but may be less stable.
Examples
>>> from scipy.misc import logsumexp >>> a = np.arange(10) >>> np.log(np.sum(np.exp(a))) 9.4586297444267107 >>> logsumexp(a) 9.4586297444267107
With weights
>>> a = np.arange(10) >>> b = np.arange(10, 0, -1) >>> logsumexp(a, b=b) 9.9170178533034665 >>> np.log(np.sum(b*np.exp(a))) 9.9170178533034647