a = np.array([[3, 1, 2], [5, 8, 9], [7, 4, 3]])
b = np.array([[2, 3, 0], [3, 1, 2], [7, 4, 3]])
av = a.view([('', a.dtype)] * a.shape[1]).ravel()
bv = b.view([('', b.dtype)] * b.shape[1]).ravel()
np.intersect1d(av, bv).view(a.dtype).reshape(-1, a.shape[1])
Get intersecting rows across two 2D numpy arrays