如何将(2, 2, 1)维度的array转换为2*2矩阵并在Python中求逆
实现步骤
1. 依赖库导入
直接用numpy即可完成所有操作,首先导入依赖:
import numpy as np
2. 三维数组降为2*2矩阵
你拿到的(2,2,1)维度数组最后一维是长度为1的冗余维度,以下3种方法都可以实现降维,任选其一即可:
- 方法1:用
np.squeeze()自动移除所有长度为1的维度
# 先构造你给出的示例数组,实际使用时替换成你自己的数组变量即可 arr = np.array([[np.array([0.53281666]), np.array([0.51876626])], [np.array([0.53281666]), np.array([0.51876626])]]) mat_2d = np.squeeze(arr) # 验证维度 print(mat_2d.shape) # 输出 (2, 2)
- 方法2:用
reshape直接指定目标维度
mat_2d = arr.reshape(2, 2)
- 方法3:索引直接取最后一维的第一个元素
mat_2d = arr[..., 0]
3. 矩阵求逆
用numpy线性代数模块的inv方法即可完成求逆,注意你给出的示例矩阵两行元素完全相同,属于行列式为0的奇异矩阵,本身不存在逆矩阵,所以代码加了异常捕获:
try: inv_matrix = np.linalg.inv(mat_2d) print("逆矩阵为:\n", inv_matrix) except np.linalg.LinAlgError: print("当前矩阵为奇异矩阵,无逆矩阵")
如果你的实际业务数据不是示例中的重复值场景,就可以正常得到逆矩阵结果。
内容的提问来源于stack exchange,提问作者Elaf Salah
相关产品推荐
相关产品推荐

