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

如何用简洁语法从NumPy数组中删除零方差列?

删除零方差列的简洁Numpy写法

当然有,你可以利用np.nanvar(忽略NaN计算方差)结合布尔索引实现,和你之前删除全NaN/全0列的写法风格完全一致:

核心代码

# 删除零方差列(自动忽略列中的NaN)
X = X[:, ~np.isclose(np.nanvar(X, axis=0), 0)]

为什么用np.isclose而不是直接等于0?

因为浮点数计算存在精度误差,直接用==0可能会把接近0的方差误判为非零方差,np.isclose会帮你处理这种精度问题,更稳妥。

整合所有过滤逻辑

如果你想把删除全NaN、全0、零方差列的操作合并成一行,可以用逻辑与组合多个条件:

# 一次性过滤三类无效列
filter_mask = (
    ~np.all(np.isnan(X), axis=0) 
    & ~np.all(X == 0, axis=0) 
    & ~np.isclose(np.nanvar(X, axis=0), 0)
)
X = X[:, filter_mask]

针对你的示例数据测试

你的示例数组中第二列全为10(方差为0),第四列全为0,用上面的整合代码处理后,最终会保留第一列(方差不为0),符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:03:13