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

Python移除含至少一个0的numpy数组列的实现方法

Pythonic方法处理含0列的numpy数组操作

给定原始numpy数组:

import numpy as np

arr = np.array([[1., 1., 0., 1., 1.],
                [1., 1., 1., 1., 1.],
                [1., 1., 1., 1., 0.],
                [1., 1., 1., 1., 0.]])

需求:找出所有包含至少一个0的列,移除这些列并统计移除的列数,最终得到全1的3列数组。

直接用numpy的向量化操作就能高效完成,代码如下:

# 生成保留列的掩码:仅保留所有元素都不为0的列
keep_cols = (arr != 0).all(axis=0)
# 筛选得到目标数组
filtered_arr = arr[:, keep_cols]
# 计算移除的列数
removed_count = arr.shape[1] - filtered_arr.shape[1]

验证结果:

print(filtered_arr)
# 输出:
# array([[1., 1., 1.],
#        [1., 1., 1.],
#        [1., 1., 1.],
#        [1., 1., 1.]])

print(removed_count)
# 输出:2

关键逻辑说明

  • (arr != 0).all(axis=0):先对数组每个元素做非0判断,再沿列方向取逻辑与,得到每列是否全为非0的布尔数组,这是numpy向量化操作的典型用法,避免循环,效率极高。
  • arr[:, keep_cols]:利用numpy的布尔索引直接筛选列,语法简洁且符合Pythonic风格。
  • 移除列数通过原始列数与保留列数的差值计算,直观易懂。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:03