检查 numpy 数组中的任何行是否是另一个数组的一部分

Ana*_*swy 1 python arrays numpy

我是第一次使用 numpy。我正在努力实现以下目标:

有2个数组:

a = np.array([[1, 3], [2, 5], [1, 2], [2, 1], [1,6]])
b = np.array([[3, 5], [1, 2]])
Run Code Online (Sandbox Code Playgroud)

我需要检查 array 中的任何对(或换句话说一行)是否以相同的顺序b存在于 array 中a(如,[1, 2]不被视为与 相同[2, 1]

上面的例子应该返回 True,因为 和ab包含[1, 2]

我试过了:

for [x, y] in b
    if [x, y] in a
Run Code Online (Sandbox Code Playgroud)

和:

if (a == b).all(1).any() # --> This throws "AttributeError: 'bool' object has no attribute 'all'"
Run Code Online (Sandbox Code Playgroud)

但失败了。

提前致谢

Ehs*_*san 6

让我们以 numpyic 的方式来做(不建议使用 numpy 循环)。添加一个维度,None让 numpy 进行正确的广播,然后使用anyall沿着正确的轴:

(a==b[:,None]).all(-1).any()
Run Code Online (Sandbox Code Playgroud)

相关样本输入的输出:

True
Run Code Online (Sandbox Code Playgroud)