scipy.special.xlog1py#
- scipy.special.xlog1py(x, y, out=None) = <ufunc 'xlog1py'>#
计算
x*log1p(y),当x = 0时,结果为 0。- 参数:
- xarray_like
乘数
- yarray_like
参数
- outndarray, optional
用于存储函数结果的可选输出数组
- 返回:
- z标量或 ndarray
计算出的 x*log1p(y)
附注
在版本 0.13.0 中添加。
数组 API 标准支持
xlog1py对 Python Array API 标准兼容的后端具有实验性支持,除了 NumPy 之外。请考虑通过设置环境变量SCIPY_ARRAY_API=1并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。库
CPU
GPU
NumPy
✅
不适用
CuPy
不适用
✅
PyTorch
✅
✅
JAX
✅
✅
Dask
✅
不适用
有关更多信息,请参阅 对数组 API 标准的支持。
示例
此示例展示了如何使用该函数来计算几何离散随机变量的概率质量函数的对数。几何分布的概率质量函数定义如下
\[f(k) = (1-p)^{k-1} p\]其中 \(p\) 是单次成功的概率,\(1-p\) 是单次失败的概率,\(k\) 是获得第一次成功的试验次数。
>>> import numpy as np >>> from scipy.special import xlog1py >>> p = 0.5 >>> k = 100 >>> _pmf = np.power(1 - p, k - 1) * p >>> _pmf 7.888609052210118e-31
如果将 k 作为相对较大的数字,概率质量函数的值可能会变得非常低。在这种情况下,取 pmf 的对数会更合适,因为对数函数可以将值更改为更适合处理的比例。
>>> _log_pmf = xlog1py(k - 1, -p) + np.log(p) >>> _log_pmf -69.31471805599453
我们可以通过取对数 pmf 的指数来确认我们得到的值接近原始 pmf 值。
>>> _orig_pmf = np.exp(_log_pmf) >>> np.isclose(_pmf, _orig_pmf) True