python - 如何合并上三角形和下三角形,同时添加 1 的对角线

标签 python numpy

我有一个上、下对角三角矩阵,我想合并它们,但还要添加一个对角线 1s。

这是我所拥有的...

upper = np.array([[0.90858992, 0.96590361, 0.95616282],
                 [       np.nan, 0.90055735, 0.8956839 ],
                 [       np.nan,        np.nan, 0.94590614]])

还有较低的...

lower = np.array([[0.90858992,   np.nan,   np.nan    ],
                  [0.96590361, 0.90055735, np.nan    ],
                  [0.95616282, 0.8956839 , 0.94590614]])

这就是我想要制作的:

np.array([
          [1, 0.90858992, 0.96590361,     0.95616282    ],
          [0.90858992,   1,     0.90055735,    0.8956839],
          [0.96590361, 0.90055735,        1, 0.94590614 ],
          [0.95616282, 0.8956839 , 0.94590614,    1     ]])

有人对我如何实现这个预期结果有任何建议吗?我尝试过矩阵加法,但似乎无法使其工作

最佳答案

可以从单位矩阵开始,然后填充上/下三角部分。

要访问输入矩阵和输出矩阵的上/下三角部分,您可以使用np.triu_indicesnp.tril_indices

以下代码应创建预期的 out 数组。

n = len(upper) + 1
out = np.eye(n)
out[np.triu_indices(n, 1)] = upper[np.triu_indices(n-1)]
out[np.tril_indices(n, -1)] = lower[np.tril_indices(n-1)]

关于python - 如何合并上三角形和下三角形,同时添加 1 的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68304853/

相关文章:

python - 如何调试永不停止运行的代码?

python - 模拟外部 HTTP 请求

python - 如何更改 python 中的错误消息?

python - 如何根据 pandas 中出现次数最多的组合填写值?

python - Apache Beam - 如何在 Python 中通过键将 PCollection 分成 2 个

python - 在 poplib 模块中找不到 POP3_SSL

python - Pandas Dataframe 到所需的 python 字典

python - Numpy 矩阵减去具有重复行/列索引的向量

python - 如何在 Python 中创建类似于以下代码示例的径向集群?

Python 浮点精度格式说明符