代码之家  ›  专栏  ›  技术社区  ›  Nico Schlömer David Maze

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

  •  4
  • Nico Schlömer David Maze  · 技术社区  · 8 年前

    a 和list/set/1D 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 回复  |  直到 8 年前
        1
  •  6
  •   Divakar    8 年前

    你可以使用 np.in1d 从中查找任何元素的匹配项 b 在中的每个元素中 a 现在 np.in1d型 将使数组变平,因此我们需要在以后重新整形。最后,因为我们想找到 ANY 沿中的每一行进行匹配 使用 np.any 沿着每一行。因此,我们将有这样一个实现-

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