numpy合并上下三角形

时间:2014-03-29 22:31:02

标签: python numpy matrix

我基本上想要与this question相反。我有两个已用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 个答案:

答案 0 :(得分:6)

你的意思是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. ]])

答案 1 :(得分:0)

如果值是字符串,则只要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')