使用 Python 计算矩阵堆栈的 Moore-Penrose 伪逆

pythonnumpyserver side programmingprogramming

要计算矩阵堆栈的 (Moore-Penrose) 伪逆,请使用 Python 中的 numpy.linalg.pinv() 方法。使用矩阵的奇异值分解 (SVD) 并包括所有大奇异值来计算矩阵的广义逆。

第一个参数 a 是要伪逆的矩阵或矩阵堆栈。第二个参数 rcodn 是小奇异值的截断值。小于或等于 rcond * largest_singular_value 的奇异值设置为零。针对矩阵堆栈进行广播。第三个参数 hermitian,如果为 True,则假定 a 是 Hermitian,从而实现一种更有效的查找奇异值的方法。默认为 False。

步骤

首先,导入所需的库。

import numpy as np

使用 array() 创建数组。

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

显示数组。

print("我们的数组...\n",arr)

检查维度。

print("\n数组的维度...\n",arr.ndim)

获取数据类型。

print("\n我们的数组对象的数据类型...\n",arr.dtype)

获取形状。

print("\n我们的数组对象的形状...\n",arr.shape)

要计算数组堆栈的(Moore-Penrose)伪逆,请使用 Python 中的 numpy.linalg.pinv() 方法。

print("\n结果...\n",np.linalg.pinv(arr))

示例

import numpy as np

# 使用 array() 创建数组
arr = np.array([ [[1, 2], [3, 4]], [[1, 2], [2, 1]], [[1, 3], [3, 1]] ])

# 显示数组
print("我们的数组...\n",arr)

# 检查维度
print("\n数组的维度...\n",arr.ndim)

# 获取数据类型
print("\n我们的数组对象的数据类型...\n",arr.dtype)

# 获取形状
print("\n我们的数组对象的形状...\n",arr.shape)

# 要计算矩阵堆栈的(Moore-Penrose)伪逆,请使用 Python 中的 numpy.linalg.pinv() 方法。
print("\n结果...\n",np.linalg.pinv(arr))

输出

我们的数组...
[[[1 2]
[3 4]]

[[1 2]
[2 1]]

[[1 3]
[3 1]]]

我们的数组的维度...
3

我们的数组对象的数据类型...
int64

我们的数组对象的形状...
(3, 2, 2)

结果...
[[[-2. 1. ]
[ 1.5 -0.5 ]]

[[-0.33333333 0.66666667]
[ 0.66666667 -0.33333333]]

[[-0.125 0.375 ]
[ 0.375 -0.125 ]]]

相关文章