查找包含任何列表的NumPy数组行

Nic*_*mer 4 python arrays numpy

我有一个2D NumPy数组a和一个list/set/1D NumPy数组b.我想找到那些a包含任何一行的行b,即

import numpy as np

a = np.array([
    [1, 2, 3],
    [4, 5, 3],
    [0, 1, 0]
    ])

b = np.array([1, 2])

# result: [True, False, True]
Run Code Online (Sandbox Code Playgroud)

任何提示?

Div*_*kar 5

您可以使用它np.in1d来查找b每个元素中的任何元素的匹配项a.现在,np.in1d会使阵列变平,所以我们需要重新塑造阵列.最后,因为我们想要ANY沿着每一行找到匹配,所以沿着每一行a使用np.any.因此,我们会有这样的实现 -

np.in1d(a,b).reshape(a.shape).any(axis=1)
Run Code Online (Sandbox Code Playgroud)