Efficiently find row intersections of two 2-D numpy arrays

后端 未结 3 967
感情败类
感情败类 2021-01-05 16:45

I am trying to figure out an efficient way of finding row intersections of two np.arrays.

Two arrays have the same shapes, and duplicate values in each

3条回答
  •  忘掉有多难
    2021-01-05 17:22

    If you have no duplicates within a row you can try to replicate what np.intersect1d does under the hood (see the source code here):

    >>> c = np.hstack((a, b))
    >>> c
    array([[2, 5, 6, 2, 3, 4],
           [8, 2, 3, 7, 4, 3],
           [4, 1, 5, 5, 4, 1],
           [1, 7, 9, 7, 6, 9]])
    >>> c.sort(axis=1)
    >>> c
    array([[2, 2, 3, 4, 5, 6],
           [2, 3, 3, 4, 7, 8],
           [1, 1, 4, 4, 5, 5],
           [1, 6, 7, 7, 9, 9]])
    >>> c[:, 1:] == c[:, :-1]
    array([[ True, False, False, False, False],
           [False,  True, False, False, False],
           [ True, False,  True, False,  True],
           [False, False,  True, False,  True]], dtype=bool)
    >>> np.sum(c[:, 1:] == c[:, :-1], axis=1)
    array([1, 1, 3, 2])
    

提交回复
热议问题