本文介绍如何用一行简洁的 numpy 代码识别并剔除数组中所有方差为零(即所有非 nan 值完全相同)的列,同时兼容含 nan 的数据。
在数据预处理中,零方差特征(如全为同一常数、或除 NaN 外全部相同)通常不具备区分能力,应被移除以提升模型效率与稳定性。NumPy 提供了 np.var() 函数,默认会将 NaN 视为缺失值并导致整列方差为 nan;但直接使用 np.var(X, axis=0) != 0 会因 NaN 比较返回 False,从而错误丢弃含 NaN 的列——这正是需特别注意的关键点。
✅ 正确做法是:先显式忽略 NaN 计算方差,再筛选非零方差列。推荐使用 np.nanvar()(NumPy ≥ 1.10):
import numpy as np
X = np.array([[1, 10, np.nan, 0],
[2, 10, np.nan, 0],
[3, 10, np.nan, 0]])
# ✅ 安全剔除零方差列(自动跳过 NaN)
mask = np.nanvar(X, axis=0) != 0 # 返回布尔数组:[True, False, False, False]
X_filtered = X[:, mask]
print(X_filtered)
# 输出:
# [[ 1. nan]
# [ 2. nan]
# [ 3. nan]]⚠️ 注意事项:
mask = (
~np.all(np.isnan(X), axis=0) & # 非全 NaN
~np.all(X == 0, axis=0) & # 非全零
np.nanvar(X, axis=0) !
= 0 # 非零方差(忽略 NaN)
)
X = X[:, mask]总结:np.nanvar(X, axis=0) != 0 是剔除零方差列最简洁、鲁棒且符合数据科学实践的标准方案,务必优先替代原始 np.var() 调用。
# red
# numpy
# var
# 布尔
# 推荐使用
# 会将
# 不具备
# 对全
# 跳过
# 如何用
# 移除
# 为零
# 完全相同
相关文章:
网站制作员失业,怎样查看自己网站的注册者?
如何在宝塔面板中创建新站点?
如何破解联通资金短缺导致的基站建设难题?
网站制作壁纸教程视频,电脑壁纸网站?
网站制作价目表怎么做,珍爱网婚介费用多少?
活动邀请函制作网站有哪些,活动邀请函文案?
如何实现建站之星域名转发设置?
建站之星安装步骤有哪些常见问题?
如何制作一个表白网站视频,关于勇敢表白的小标题?
建站之星ASP如何实现CMS高效搭建与安全管理?
如何用腾讯建站主机快速创建免费网站?
Python多线程使用规范_线程安全解析【教程】
山东云建站价格为何差异显著?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
移民网站制作流程,怎么看加拿大移民官网?
如何在建站之星网店版论坛获取技术支持?
如何在新浪SAE免费搭建个人博客?
如何选择适配移动端的WAP自助建站平台?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
建站主机选购指南:核心配置与性价比推荐解析
宝塔面板如何快速创建新站点?
建站之星客服服务时间及联系方式如何?
如何在阿里云虚拟主机上快速搭建个人网站?
三星网站视频制作教程下载,三星w23网页如何全屏?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
建站之星多图banner生成与模板自定义指南
公司网站设计制作厂家,怎么创建自己的一个网站?
网站制作报价单模板图片,小松挖机官方网站报价?
焦点电影公司作品,电影焦点结局是什么?
如何快速查询域名建站关键信息?
C++中引用和指针有什么区别?(代码说明)
建站之星后台密码遗忘或太弱?如何重置与强化?
微信小程序 input输入框控件详解及实例(多种示例)
利用JavaScript实现拖拽改变元素大小
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
建站之星代理商如何保障技术支持与售后服务?
深圳网站制作培训,深圳哪些招聘网站比较好?
建站之星后台密码遗忘如何找回?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
建站之星如何实现PC+手机+微信网站五合一建站?
手机网站制作与建设方案,手机网站如何建设?
广平建站公司哪家专业可靠?如何选择?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
c# 服务器GC和工作站GC的区别和设置
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
,交易猫的商品怎么发布到网站上去?
郑州企业网站制作公司,郑州招聘网站有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。