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

Python中删除数组零行零列并识别被删除的行列

删除数组全零行/列并获取被删除的索引

直接修改你的代码,就能同时得到处理后的数组、被删除的行索引和列索引:

import numpy as np

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

# 标记非零元素
mask = A1 != 0
# 获取每行是否存在非零元素的布尔数组
row_has_nonzero = mask.any(axis=1)
# 获取每列是否存在非零元素的布尔数组
col_has_nonzero = mask.any(axis=0)

# 过滤全零行和列得到结果数组
A2 = A1[np.ix_(row_has_nonzero, col_has_nonzero)]
# 获取被删除的行索引:取row_has_nonzero中为False的位置
deleted_rows = np.where(~row_has_nonzero)[0].tolist()
# 获取被删除的列索引:取col_has_nonzero中为False的位置
deleted_cols = np.where(~col_has_nonzero)[0].tolist()

# 按期望格式输出
print([A2])
print(f"{deleted_rows} 其中 {deleted_rows[0]} 是被删除的行")
print(f"{deleted_cols} 其中 {deleted_cols[0]} 是被删除的列")

输出结果

[array([[1, 2],
       [3, 4]])]
[1] 其中 1 是被删除的行
[0] 其中 0 是被删除的列

关键逻辑说明

  • mask.any(axis=1):遍历每一行,只要该行有至少一个非零元素就返回True,全零行则返回False
  • ~row_has_nonzero:对布尔数组取反,得到全零行的标记,再用np.where()提取对应的索引
  • 列的处理逻辑和行完全一致,只是把axis设为0遍历列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:20:26