使用关于唯一行的此问题中的方法)
def intersect_along_first_axis(a, b): # check that casting to void will create equal size elements assert a.shape[1:] == b.shape[1:] assert a.dtype == b.dtype # compute dtypes void_dt = np.dtype((np.void, a.dtype.itemsize * np.prod(a.shape[1:]))) orig_dt = np.dtype((a.dtype, a.shape[1:])) # convert to 1d void arrays a = np.ascontiguousarray(a) b = np.ascontiguousarray(b) a_void = a.reshape(a.shape[0], -1).view(void_dt) b_void = b.reshape(b.shape[0], -1).view(void_dt) # intersect, then convert back return np.intersect1d(b_void, a_void).view(orig_dt)
请注意,使用
void浮点数是不安全的,因为它将导致
-0不等于
0



