我试图确定如何在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.]]
有什么想法吗?
答案 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]]