使用NumPy查找包含列表中任意元素的数组行

4

我有一个二维NumPy数组a和一个列表/集合/一维NumPy数组b。我想找到包含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个回答

6
您可以使用np.in1d方法,在所有元素中查找与b中任何元素匹配的结果。现在,np.in1d会展开数组,因此我们需要在之后重新整形。最后,由于我们想要在每行中找到任何匹配项,所以我们需要在每行上使用np.any。因此,我们的实现看起来像这样 -
np.in1d(a,b).reshape(a.shape).any(axis=1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接