【问题标题】:Python - Find correspondence in an arrayPython - 在数组中查找对应关系
【发布时间】:2020-02-05 06:38:34
【问题描述】:

我有一个包含 3D 坐标的大型 2D 数组 (3x100,000) 和一个带有某些未排序坐标的第二个 1D 数组。我想找到所有坐标包含在第二个数组中的点

一个例子:

mat1 = np.array([[1,2,3],[1,2,5],[2,3,6],[10,11,12],[20,2,3]])

mat2 = np.array([1,2,3,6])

所以这里我需要获取 0 和 2 的索引。我需要在大约 100,000 个坐标上找到每个对应关系。 Python 中有特定的函数来完成这项工作吗?

总结一下我的情况:

【问题讨论】:

    标签: python arrays numpy sorting correspondence


    【解决方案1】:

    最简单的方法是使用np.isin -

    # a,b are input arrays - mat1,mat2 respectively
    In [7]: np.flatnonzero(np.isin(a,b).all(1))
    Out[7]: array([0, 2])
    

    另一个np.searchsorted -

    In [19]: idx = np.searchsorted(b,a)
    
    In [20]: idx[idx==len(b)] = 0
    
    In [21]: np.flatnonzero((b[idx]==a).all(1))
    Out[21]: array([0, 2])
    

    如果b 未排序,请将np.argsort(b) 用作sorter arg 和np.searchsortedMore info.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多