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

时间:2016-07-20 12:54:57

标签: python arrays numpy

我有一个2D NumPy数组a和一个list / set / 1D NumPy数组b。我想找到a的{​​{1}}行,其中包含任何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]

任何提示?

1 个答案:

答案 0 :(得分:5)

您可以使用np.in1d查找b中每个元素中a的任何元素的匹配项。现在,np.in1d会使数组变平,所以我们需要重新塑造数组。最后,由于我们希望在ANY中的每一行找到a匹配,因此请沿每行使用np.any。因此,我们会有这样的实现 -

np.in1d(a,b).reshape(a.shape).any(axis=1)