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

如何用Python一次性移除numpy数组中的全零行和全零列?

如何用一行代码移除NumPy数组中的全零行和全零列?

我需要用一行代码从NumPy数组A1中同时移除所有全零行和全零列,但目前的代码只能移除全零列,输出里还保留着全零行,求正确的实现方式。

当前代码

import numpy as np
A1 = np.array([[0,0,0,0], [1,0,2,0], [0,0,0,0], [3,0,4,0]])
# 仅移除全零列的代码
result = A1[:, ~(A1 == 0).all(axis=0)]

当前输出

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

期望输出

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

解决方案

可以通过先筛选非全零行,再筛选非全零列的方式实现一行代码解决:

result = A1[~(A1 == 0).all(axis=1)][:, ~(A1 == 0).all(axis=0)]

或者用any判断非零元素的写法,逻辑更直观:

result = A1[(A1 != 0).any(axis=1)][:, (A1 != 0).any(axis=0)]

原理说明

  • (A1 == 0).all(axis=1):返回布尔数组标记全零行,取反~后得到需保留的行掩码
  • (A1 == 0).all(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 04:50:24