In [318]: arr = np.arange(24).reshape(8,3)
In [319]: test = np.array([6,7,8])
Сравнение всего массива между 2:
In [322]: np.isin(arr,test)
Out[322]:
array([[False, False, False],
[False, False, False],
[ True, True, True],
[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False]])
Найдите строку, в которой совпадают все термины:
In [323]: np.isin(arr,test).all(axis=1)
Out[323]: array([False, False, True, False, False, False, False, False])
Используйте ее инверсию в качестве маски для выборастроки хранителя:
In [324]: arr[~_]
Out[324]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23]])
isin
на самом деле in1d
плюс изменение формы:
In [327]: np.in1d(arr,test)
Out[327]:
array([False, False, False, False, False, False, True, True, True,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False])
In [328]: np.in1d(arr,test).reshape(arr.shape)
Out[328]:
array([[False, False, False],
[False, False, False],
[ True, True, True],
[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False]])
Это транслируемое сравнение также работает:
(arr[:,None,:]==test[None,:,None]).any(axis=1).all(axis=1)