我有一个上、下对角三角矩阵,我想合并它们,但还要添加一个对角线 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_indices
和np.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/