Эффективно найти пересечения строк двух двумерных массивов

Я пытаюсь найти эффективный способ найти пересечения строк двухnp.arrays.

Два массива имеют одинаковые формы, и повторяющиеся значения в каждой строке не могут быть.

Например:

import numpy as np

a = np.array([[2,5,6],
              [8,2,3],
              [4,1,5],
              [1,7,9]])

b = np.array([[2,3,4],  # one element(2) in common with a[0] -> 1
              [7,4,3],  # one element(3) in common with a[1] -> 1
              [5,4,1],  # three elements(5,4,1) in common with a[2] -> 3
              [7,6,9]]) # two element(9,7) in common with a[3] -> 2

Мой желаемый результат:np.array([1,1,3,2])

Это легко сделать с помощью цикла:

def get_intersect1ds(a, b):
    result = np.empty(a.shape[0], dtype=np.int)
    for i in xrange(a.shape[0]):
        result[i] = (len(np.intersect1d(a[i], b[i])))
    return result

Результат:

>>> get_intersect1ds(a, b)
array([1, 1, 3, 2])

Но есть ли более эффективный способ сделать это?

Ответы на вопрос(3)

Ваш ответ на вопрос