python:查找子集坐标

Liw*_*yen 2 python numpy scipy

我有一组坐标,并尝试找到坐标所在的子集.

import numpy as np
a=np.array([[[0,1,1],[1,1,1]],[[0,1,1],[2,1,1]],[[3,3,3],[2,2,2]]])
Run Code Online (Sandbox Code Playgroud)

如果我尝试这样的事情:

print(np.argwhere(a==[[0,1,1]]))
print(a[[0,1,1]])
print(np.isin([0,1,1],a))
Run Code Online (Sandbox Code Playgroud)

我明白了:

[[0 0 0]
 [0 0 1]
 [0 0 2]
 [0 1 1]
 [0 1 2]
 [1 0 0]
 [1 0 1]
 [1 0 2]
 [1 1 1]
 [1 1 2]]
[[[0 1 1]
  [1 1 1]]

 [[0 1 1]
  [2 1 1]]

 [[0 1 1]
  [2 1 1]]]
[ True  True  True]
Run Code Online (Sandbox Code Playgroud)

但我希望有类似的东西:

[true,true,false]
Run Code Online (Sandbox Code Playgroud)

编辑

最好的情况是如果我得到一个数组,其中只有作为已创建子集成员的所有其他坐标都是这样的:

out = [[1,1,1],[2,1,1]]
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 6

用于all(-1)在最后一个轴上断言数组相等,然后any(1)检查第二个轴是否存在这样的条件:

(a == [0,1,1]).all(-1).any(1)
# array([ True,  True, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

在更新:

mask = (a == [0,1,1]).all(-1)
a[mask.any(1)[:,None] & ~mask]

#array([[1, 1, 1],
#       [2, 1, 1]])
Run Code Online (Sandbox Code Playgroud)