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

如何从NumPy二维矩阵中删除与指定数组完全相等的行

NumPy删除与指定数组完全匹配的行

核心实现

直接利用NumPy内置的广播机制和布尔索引实现,无需额外循环,执行效率高。

示例代码

import numpy as np

# 定义输入矩阵与待匹配的目标数组
input_matrix = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
target_row = np.array([1,2,3])

# 核心过滤逻辑
filtered_matrix = input_matrix[~(input_matrix == target_row).all(axis=1)]

逻辑说明

  • input_matrix == target_row:触发NumPy广播机制,将目标数组与矩阵每一行逐元素对比,输出与原矩阵形状一致的布尔值矩阵
  • .all(axis=1):沿行方向对布尔值做与运算,仅当整行所有元素都匹配目标数组时返回True,输出长度等于矩阵行数的一维布尔数组
  • ~:对布尔数组做取反操作,将需要删除的匹配行标记为False,保留行标记为True
  • 最后用处理后的布尔数组对原矩阵做索引,得到过滤后的结果

执行结果

运行上述代码输出的filtered_matrix即为要求的结果:

array([[4, 5, 6],
       [7, 8, 9]])

注意事项

  • 需保证目标数组的长度与矩阵的列数一致,否则会触发广播报错
  • 若需一次性删除多个匹配行,可将待删除的行整理为二维数组,使用np.isin实现:
    # 示例:同时删除[1,2,3]和[7,8,9]两行
    target_rows = np.array([[1,2,3], [7,8,9]])
    filtered_matrix = input_matrix[~np.isin(input_matrix, target_rows).all(axis=1)]
    

内容的提问来源于stack exchange,提问作者Hadar Shavit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:39:01