提取numpy数组下三角值后如何还原为原始2D下三角矩阵形式
解决方案
你可以直接利用之前生成的下三角索引lower_idx,按如下步骤恢复矩阵:
- 先初始化一个和原矩阵形状一致的全零数组
- 将提取到的数值列表直接赋值到全零数组对应索引位置即可
完整代码示例
import numpy as np # 你原有操作流程 arr_g = np.tril(np.random.rand(3, 3), -1) lower_idx = np.tril_indices_from(arr_g) A_1 = list(arr_g[lower_idx]) # 恢复下三角矩阵代码 recovered_mat = np.zeros_like(arr_g) recovered_mat[lower_idx] = A_1 # 输出验证 print(recovered_mat)
补充说明
如果丢失了之前的lower_idx,只要你确认原矩阵是3阶、提取的是主对角线往下偏移1位的下三角(对应你原代码里tril的参数-1),可以重新生成对应索引再赋值:
# 重新生成相同规则的下三角索引 lower_idx = np.tril_indices(n=3, k=-1) recovered_mat = np.zeros((3, 3)) recovered_mat[lower_idx] = A_1
tril_indices生成的索引顺序和你提取下三角元素的顺序完全一致,赋值后自动填充对应位置,其余位置保持0值,刚好符合你需要的下三角矩阵格式。
内容的提问来源于stack exchange,提问作者rpb
相关产品推荐
相关产品推荐

