根据其他 2d np.array 获取 2d np.array 行索引

Get 2d np.array row indices depending on other 2d np.array

我想在另一个 2d np.array 的基础上获取 2d np.array 的所有行索引。

输入:
all_elements = np.array([[1, 1], [2, 2], [3, 3]])
elements = np.array([[1, 1],[2, 2]])

类似于:

idx = np.row_idx(elements, all_elements, axis=0)
输出:
[0, 1]

我一直在尝试使用 np.where(np.isin(.....)) 的某些版本来执行此操作,但我无法使其正常工作。 有人有什么建议吗?

IIUC,你可能想使用:

np.where((all_elements==elements[:,None]).all(2).any(0))[0]

输出:array([0, 1])

解释:

# compare all elements using broadcasting
(all_elements==elements[:,None])

array([[[ True,  True],
        [False, False],
        [False, False]],

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

# all True on the last dimension
(all_elements==elements[:,None]).all(2)

array([[ True, False, False],
       [False,  True, False]])

# any match per first dimension
(all_elements==elements[:,None]).all(2).any(0)

array([ True,  True, False])