如果我有两个numpy数组:
a = np.array[[0,1,1],
[0,1,0],
[0,0,0]]
b = np.array[[0,1,1],
[0,0,1],
[0,0,0]]
我怎样才能找到它们之间的“重叠”,因此输出为:
c = [[0,1,1],
[0,0,0],
[0,0,0]]
我有这个,但有没有一种方法可以更快,因为我的阵列很大?
c = a + b - 1
c[c<0] = 0
答案 0 :(得分:4)
如果在示例中,数组中的值为0或1,则可以使用按位“和”运算符&
:
In [3]: a
Out[3]:
array([[0, 1, 1],
[0, 1, 0],
[0, 0, 0]])
In [4]: b
Out[4]:
array([[0, 1, 1],
[0, 0, 1],
[0, 0, 0]])
In [5]: c = a & b
In [6]: c
Out[6]:
array([[0, 1, 1],
[0, 0, 0],
[0, 0, 0]])