numpy 合并上三角和下三角

2 投票
2 回答
1280 浏览
提问于 2025-04-18 00:29

我想做的事情其实是和这个问题正好相反。我有两个矩阵,它们是通过 np.trilnp.triu 分开的,现在我想把它们重新组合成一个完整的矩阵。

A = array([[ 0. ,  0. ,  0. ],
           [ 0.1,  0. ,  0. ],
           [ 0.6,  0.5,  0. ]])

B = array([[ 0. ,  0.4,  0.8],
           [ 0. ,  0. ,  0.3],
           [ 0. ,  0. ,  0. ]])

我希望它看起来像这样:

array([[ 0. ,  0.4,  0.8],
       [ 0.1,  0. ,  0.3],
       [ 0.6,  0.5,  0. ]])

有没有现成的 numpy 函数可以做到这一点呢?

2 个回答

1

如果这些值是字符串,那么只要B是上三角形的,这个方法就可以使用。

A = np.array([[ 0. ,  0. ,  0. ],
           [ '0.1**',  0. ,  0. ],
           [ 0.6,  '0.5**',  0. ]])

B = np.array([[ 0. ,  0.4,  '0.8***'],
           [ 0. ,  0. ,  0.3],
           [ 0. ,  0. ,  0. ]])

for i in range(0,len(A)):
    for j in range(0,i):
        B[i,j]=A[i,j]
            
B

返回结果

array([['0.0', '0.4', '0.8***'],
       ['0.1**', '0.0', '0.3'],
       ['0.6', '0.5**', '0.0']], dtype='<U32')
11

你的意思是 A+B 吗?

import numpy
A = numpy.array([[ 0. ,  0. ,  0. ],
           [ 0.1,  0. ,  0. ],
           [ 0.6,  0.5,  0. ]])

B = numpy.array([[ 0. ,  0.4,  0.8],
           [ 0. ,  0. ,  0.3],
           [ 0. ,  0. ,  0. ]])

print A+B

返回

array([[ 0. ,  0.4,  0.8],
       [ 0.1,  0. ,  0.3],
       [ 0.6,  0.5,  0. ]])

撰写回答