根据其他 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])
我想在另一个 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])