pythonical比较numpy中两个具有排列行的数组的索引

pythonical比较numpy中两个具有排列行的数组的索引,python,numpy,Python,Numpy,我有两个大小相同的numpy NDARRAY,行排列如下: import numpy as np a = np.ndarray([[1,2,3], [4,5,6], [7,8,9], [10,11,12]]) b = np.ndarray([[7,8,9], [10,11,12], [1,2,3], [4,

我有两个大小相同的numpy NDARRAY,行排列如下:

import numpy as np
a = np.ndarray([[1,2,3],
                [4,5,6],
                [7,8,9],
                [10,11,12]])
b = np.ndarray([[7,8,9],
                [10,11,12],
                [1,2,3],
                [4,5,6]])
我想要一个函数,返回第一个数组中每一行相对于第二个数组的索引。例如:

compare_row_indices(a,b)
会回来吗

[2,3,0,1] # 0-based indexing

实现此功能最符合Python的方式是什么?

可能不是最好的方式,但这似乎可行(将其分解为多个步骤以便于可视化):


太好了,谢谢!在一行中,这将产生:
yo=np.argwhere(np.all(a[:,None]==b,axis=-1))[:,1]
>>> cmp = a[:, None] == b
>>> cmp
array([[[False, False, False],
        [False, False, False],
        [ True,  True,  True],
        [False, False, False]],

       [[False, False, False],
        [False, False, False],
        [False, False, False],
        [ True,  True,  True]],

       [[ True,  True,  True],
        [False, False, False],
        [False, False, False],
        [False, False, False]],

       [[False, False, False],
        [ True,  True,  True],
        [False, False, False],
        [False, False, False]]])
>>> eq = np.all(cmp, axis=-1)
>>> eq
array([[False, False,  True, False],
       [False, False, False,  True],
       [ True, False, False, False],
       [False,  True, False, False]])
>>> np.argwhere(eq)
array([[0, 2],
       [1, 3],
       [2, 0],
       [3, 1]])
>>> np.argwhere(eq)[:, 1]
array([2, 3, 0, 1])