二元矩阵乘法与OR而不是和

时间:2014-01-28 08:00:18

标签: python numpy matrix

我试图确定如何在Python / Numpy / Scipy中执行二进制矩阵乘法而不是加号(加法),使用OR,这意味着当我们"乘以"下面的两个矩阵

1  0
1  1
0  1

1  1  0
0  1  1

我们应该

[[1., 1., 0],
[1., 1., 1.],
[0, 1., 1.]]

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

> a = np.matrix([[1,1,0],[0,1,1]], dtype=bool)
> a.T * a 
matrix([[ True,  True, False],
        [ True,  True,  True],
        [False,  True,  True]], dtype=bool)

普通的numpy数组可以通过dot函数访问矩阵式乘法。

答案 1 :(得分:0)

针对问题中的具体数据

a = np.array([[1,  0],
               [1,  1],
               [0,  1]], dtype=bool)
b = np.array([[1,  1,  0],
               [0,  1,  1]], dtype=bool)

print np.dot(a,b)

看0和1只是乘以1

print 1*np.dot(a,b)

答案是

[[1 1 0]
 [1 1 1]
 [0 1 1]]