乘以traiagular 2D矩阵python

时间:2014-05-26 11:12:20

标签: python numpy matrix

我有一个上面的矩阵" A"喜欢以下。

    1   2   3   4
1   0   1   3   0
2       0   3   1
3           0   3
4               0

然后还有另一个三角形矩阵" B"如下

    1   2       3       4
1   0   14.89   23.89   0
2       0       24.39   14.89
3               0       23.89
4                       0

我需要从B [1,2],A [1,3],B [1,3]等乘以A [1,2]。

1 * 14.89

3 * 23.89

代码

In [14]: A = np.array([[0,1,3,0],[1,0,3,1],[3,3,0,3],[0,1,3,0]])

In [15]: A
Out[15]: 
array([[0, 1, 3, 0],
       [1, 0, 3, 1],
       [3, 3, 0, 3],
       [0, 1, 3, 0]])
In [16]: B = np.array([[0,14.89,23.89,0],[14.89,0,24.39,14.89],[23.89,24.39,0,23.89],[0,14.89,23.89,0]])

In [17]: B
Out[17]: 
array([[  0.  ,  14.89,  23.89,   0.  ],
       [ 14.89,   0.  ,  24.39,  14.89],
       [ 23.89,  24.39,   0.  ,  23.89],
       [  0.  ,  14.89,  23.89,   0.  ]])

这种做法似乎有效。 ?

for cell in np.triu(A).flat:
             for cell2 in np.triu(B).flat:
                 print cell*cell2

1 个答案:

答案 0 :(得分:1)

Numpy数组乘法以元素方式运算,因此在这种情况下,简单的A*B就足够了。

对于矩阵点,内部和外部产品,您需要明确使用numpy.dotnp.innernumpy.outer