在 Python 中计算矩阵堆栈的对数行列式


要计算矩阵堆栈的对数行列式,请在 Python 中使用 numpy.linalg.slogdet() 方法。第一个参数 s 是一个输入数组,必须是方形的二维数组。该方法,带符号返回一个表示行列式符号的数字。对于实数矩阵,此值为 1、0 或 -1。对于复数矩阵,此值为绝对值为 1 的复数,否则为 0。

该方法,带 logdet 返回行列式绝对值的自然对数。如果行列式为零,则符号将为 0,logdet 将为 -Inf。在所有情况下,行列式都等于 sign * np.exp(logdet)。

步骤

首先,导入所需的库 -

import numpy as np

创建一个数组 -

arr = np.array([ [[1, 2], [3, 4]], [[1, 2], [2, 1]], [[1, 3], [3, 1]] ])

显示数组 -

print("Our Array...\n",arr)

检查维度 -

print("\nDimensions of our Array...\n",arr.ndim)

获取数据类型 -

print("\nDatatype of our Array object...\n",arr.dtype)

获取形状 -

print("\nShape of our Array object...\n",arr.shape)

线性代数中数组的行列式 -

print("\nDeterminant...\n",np.linalg.det(arr))

要计算矩阵堆栈的对数行列式,请使用 numpy.linalg.slogdet() 方法。如果行列式为零,则符号将为 0,logdet 将为 -Inf。在所有情况下,行列式都等于 sign * np.exp(logdet) -

(sign, logdet) = np.linalg.slogdet(arr)
print("\nResult....\n",(sign, logdet))

示例

import numpy as np

# Create an array
arr = np.array([ [[1, 2], [3, 4]], [[1, 2], [2, 1]], [[1, 3], [3, 1]]])

# Display the array
print("Our Array...\n",arr)

# Check the Dimensions
print("\nDimensions of our Array...\n",arr.ndim)

# Get the Datatype
print("\nDatatype of our Array object...\n",arr.dtype)

# Get the Shape
print("\nShape of our Array object...\n",arr.shape)

# The determinant of an array in linear algebra
print("\nDeterminant...\n",np.linalg.det(arr))

# To compute log-determinants for a stack of matrices, use the numpy.linalg.slogdet() method in Python
(sign, logdet) = np.linalg.slogdet(arr)
print("\nResult....\n",(sign, logdet))

输出

Our Array...
[[[1 2]
[3 4]]

[[1 2]
[2 1]]

[[1 3]
[3 1]]]

Dimensions of our Array...
3

Datatype of our Array object...
int64

Shape of our Array object...
(3, 2, 2)

Determinant...
[-2. -3. -8.]

Result....
(array([-1., -1., -1.]), array([0.69314718, 1.09861229, 2.07944154]))

更新于: 2022年2月25日

143 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告