You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除NumPy数组中仅包含指定数字组合的行

实现方法

核心逻辑是逐行校验三角面的所有顶点是否全部属于指定索引集合,过滤掉符合删除条件的行即可,用NumPy内置向量化实现不需要写循环,运行效率高。

直接上可运行代码:

import numpy as np

faces = np.array([[4, 0, 1],
                  [5, 4, 1],
                  [7, 5, 1],
                  [7, 5, 4],
                  [3, 0, 1],
                  [7, 3, 1],
                  [4, 2, 0],
                  [6, 4, 2],
                  [7, 6, 2],
                  [7, 6, 4],
                  [3, 2, 0],
                  [7, 3, 2]])
indices = [0, 1, 2, 3]

# 生成待删除行的布尔掩码
row_all_in_indices = np.isin(faces, indices).all(axis=1)
# 过滤掉待删除行
result = faces[~row_all_in_indices]

逻辑说明

  • np.isin(faces, indices) 会返回和faces维度一致的布尔数组,对应位置的顶点编号如果在indices列表中则值为True,否则为False
  • .all(axis=1) 按行做全真判断,某行返回True就代表这个三角面的三个顶点全部属于目标索引集合,就是需要删除的行
  • 最后对掩码取反,保留所有不满足删除条件的行即可

运行后得到的result输出如下,已经精准删除了两行目标数据:

array([[4, 0, 1],
       [5, 4, 1],
       [7, 5, 1],
       [7, 5, 4],
       [7, 3, 1],
       [4, 2, 0],
       [6, 4, 2],
       [7, 6, 2],
       [7, 6, 4],
       [7, 3, 2]])

这个方法不需要考虑三角面内顶点的排列顺序,只要三个顶点都在指定索引列表里就会被识别删除,完全匹配三角剖分数据的处理需求。


内容的提问来源于stack exchange,提问作者Nico Su

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:24:22