【问题标题】:Search multiple 1D numpy-arrays in 3D numpy-array在 3D numpy-array 中搜索多个 1D numpy-array
【发布时间】:2021-02-13 07:04:02
【问题描述】:

我从表面扫描中获得了一个 stl 文件。从中我得到了每个三角形的 3D 数组,其中包含 3 个点和它们的 x、y、z 坐标。

现在要查找具有 2 个共同点的所有三角形与另一个具有 x、y、z 点坐标的二维数组(也可以是列表,格式不那么重要)。

我的 3D 数组的示例数据是

Triangle= np.array([[[0, 1, 1],
        [1, 0, 1],
        [1, 1, 2]],

       [[0, 0, 1],
        [1, 0, 1],
        [0, 1, 1]],

       [[3, 0, 1],
        [3, 1, 1],
        [2, 0, 2]],

       [[2, 0, 2],
        [3, 1, 1],
        [2, 1, 2]],

       [[1, 1, 2],
        [1, 0, 1],
        [2, 0, 2]],

       [[2, 0, 2],
        [2, 1, 2],
        [1, 1, 2]],

       [[1, 2, 3],
        [0, 1, 1],
        [1, 1, 2]],

       [[1, 2, 3],
        [0, 2, 1],
        [0, 1, 1]],

       [[0, 3, 1],
        [0, 2, 1],
        [1, 3, 2]],

       [[0, 2, 1],
        [1, 2, 3],
        [1, 3, 2]],

       [[1, 1, 2],
        [2, 1, 2],
        [2, 2, 1]],

       [[2, 2, 1],
        [1, 2, 3],
        [1, 1, 2]],

       [[2, 1, 2],
        [3, 1, 1],
        [2, 2, 1]],

       [[3, 1, 1],
        [3, 2, 1],
        [2, 2, 1]],

       [[2, 3, 1],
        [3, 2, 1],
        [3, 3, 1]],

       [[2, 3, 1],
        [2, 2, 1],
        [3, 2, 1]],

       [[2, 3, 1],
        [1, 3, 2],
        [1, 2, 3]],

       [[1, 2, 3],
        [2, 2, 1],
        [2, 3, 1]]])

为了积分

points = np.array([[1, 2, 3],
       [0, 1, 1],
       [0, 2, 1],
       [1, 1, 2],
       [1, 3, 2],
       [2, 2, 1],
       [2, 3, 1]])

【问题讨论】:

    标签: python arrays numpy multidimensional-array numpy-ndarray


    【解决方案1】:

    让我们尝试广播来比较所有三角形和所有点:

    compare = (Triangle[:,:,None,:] == points[None,None,...])
    
    # `all` check if all the coordinates to be equal,
    # `sum` counts the equal points 
    mask = compare.all(axis=-1).sum(axis=(-2,-1)) >=2
    
    Triangle[mask]
    

    输出:

    array([[[0, 1, 1],
            [1, 0, 1],
            [1, 1, 2]],
    
           [[1, 2, 3],
            [0, 1, 1],
            [1, 1, 2]],
    
           [[1, 2, 3],
            [0, 2, 1],
            [0, 1, 1]],
    
           [[0, 3, 1],
            [0, 2, 1],
            [1, 3, 2]],
    
           [[0, 2, 1],
            [1, 2, 3],
            [1, 3, 2]],
    
           [[1, 1, 2],
            [2, 1, 2],
            [2, 2, 1]],
    
           [[2, 2, 1],
            [1, 2, 3],
            [1, 1, 2]],
    
           [[2, 3, 1],
            [2, 2, 1],
            [3, 2, 1]],
    
           [[2, 3, 1],
            [1, 3, 2],
            [1, 2, 3]],
    
           [[1, 2, 3],
            [2, 2, 1],
            [2, 3, 1]]])
    

    【讨论】:

      猜你喜欢
      • 2021-04-16
      • 2020-12-11
      • 1970-01-01
      • 2022-01-18
      • 2018-05-31
      • 1970-01-01
      • 2015-01-13
      • 2013-09-26
      • 2021-09-16
      相关资源
      最近更新 更多