本文简要介绍 python 语言中 numpy.linalg.slogdet
的用法。
用法:
linalg.slogdet(a)
计算数组行列式的符号和(自然)对数。
如果数组具有非常小或非常大的行列式,则对
det
的调用可能会上溢或下溢。该例程对此类问题更加稳健,因为它计算行列式的对数而不是行列式本身。- a: (…, M, M) 数组
输入数组,必须是一个方形二维数组。
- sign: (…)数组
代表行列式符号的数字。对于实数矩阵,这是 1、0 或 -1。对于复数矩阵,这是一个绝对值为 1 的复数(即它在单位圆上),否则为 0。
- logdet: (…)数组
行列式绝对值的自然对数。
- 如果行列式为零,则numpy.sign将为 0 并且日志将会
- -Inf。在所有情况下,行列式都等于
sign * np.exp(logdet)
。
参数:
返回:
注意:
广播规则适用,有关详细信息,请参阅
numpy.linalg
文档。使用 LAPACK 例程
z/dgetrf
通过 LU 分解计算行列式。例子:
二维数组
[[a, b], [c, d]]
的行列式是ad - bc
:>>> a = np.array([[1, 2], [3, 4]]) >>> (sign, logdet) = np.linalg.slogdet(a) >>> (sign, logdet) (-1, 0.69314718055994529) # may vary >>> sign * np.exp(logdet) -2.0
为一堆矩阵计算log-determinants:
>>> a = np.array([ [[1, 2], [3, 4]], [[1, 2], [2, 1]], [[1, 3], [3, 1]] ]) >>> a.shape (3, 2, 2) >>> sign, logdet = np.linalg.slogdet(a) >>> (sign, logdet) (array([-1., -1., -1.]), array([ 0.69314718, 1.09861229, 2.07944154])) >>> sign * np.exp(logdet) array([-2., -3., -8.])
此例程在普通
det
不成功的情况下成功:>>> np.linalg.det(np.eye(500) * 0.1) 0.0 >>> np.linalg.slogdet(np.eye(500) * 0.1) (1, -1151.2925464970228)
相关用法
- Python numpy linalg.svd用法及代码示例
- Python numpy linalg.solve用法及代码示例
- Python numpy linalg.pinv用法及代码示例
- Python numpy linalg.eigh用法及代码示例
- Python numpy linalg.tensorinv用法及代码示例
- Python numpy linalg.LinAlgError用法及代码示例
- Python numpy linalg.matrix_rank用法及代码示例
- Python numpy linalg.det用法及代码示例
- Python numpy linalg.cond用法及代码示例
- Python numpy linalg.inv用法及代码示例
- Python numpy linalg.eig用法及代码示例
- Python numpy linalg.lstsq用法及代码示例
- Python numpy linalg.norm用法及代码示例
- Python numpy linalg.multi_dot用法及代码示例
- Python numpy linalg.tensorsolve用法及代码示例
- Python numpy linalg.qr用法及代码示例
- Python numpy linalg.matrix_power用法及代码示例
- Python numpy linalg.cholesky用法及代码示例
- Python numpy linalg.eigvals用法及代码示例
- Python numpy linalg.eigvalsh用法及代码示例
- Python numpy linspace用法及代码示例
- Python numpy lib.NumpyVersion用法及代码示例
- Python numpy lib.Arrayterator用法及代码示例
- Python numpy legendre.legint用法及代码示例
- Python numpy laguerre.lagone用法及代码示例
注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.linalg.slogdet。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。