【问题标题】:Search multiple elements in 2D array?在二维数组中搜索多个元素?
【发布时间】:2021-11-13 15:03:40
【问题描述】:

我有一个一维数组 ma​​tch 和一个二维数组 data 。我可以像这样搜索一个或多个元素:

 data[data[:,0] == match[0] ]
 data[data[:,0] == match[0] & data[:,0] == match[1] ]

但是你如何搜索所有这些:

 data[ data[:,0] == match ]

我想我可以在 in1d() 中使用 numba 函数! :

    mask = np.zeros(len(ar1), dtype=bool)
    for a in ar2:
            mask |= (ar1 == a)
    return mask

【问题讨论】:

    标签: numpy search filter numba


    【解决方案1】:

    你可以使用numpy.isin:

    np.isin(data[:, 0], match)
    

    示例

    data = np.array([[1, 4],[5, 2],[2, 4]])
    match = np.array([2, 4])
    
    np.isin(data[:,0], match)
    # array([False, False,  True])
    
    data[np.isin(data[:, 0], match)]
    # array([[2, 4]])
    

    【讨论】:

    • 任何有其他方法的机会...... numba 不支持它:(
    • 不确定如何将其与 numba 一起使用,但您也可以进行 outer 比较,然后检查是否匹配:(data[:, 0][:, None] == match).any(1)
    • 不能在 numba 函数中使用它,所以现在我返回完整的数组并在外面执行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2017-10-09
    • 2014-04-19
    • 2018-02-15
    相关资源
    最近更新 更多