如何在不使用Pandas的情况下从Sklearn Wine数据集中删除target=0的行
解决方案:不使用Pandas过滤Wine数据集
直接用NumPy的布尔索引就能完成需求,不用依赖Pandas。步骤如下:
- 生成过滤掩码:创建一个布尔数组,标记出
y中值不为0的样本位置 - 用掩码过滤特征集
X和标签集y,保留目标样本
完整代码如下:
from sklearn.datasets import load_wine import numpy as np # 加载数据集,取第11、12列特征和标签 wine = load_wine() X, y = wine.data[:, 11:13], wine.target # 生成掩码:筛选出标签不为0的样本 mask = y != 0 # 应用掩码过滤数据 X_filtered = X[mask] y_filtered = y[mask] # 验证结果:查看过滤后的标签类别(应该只有1和2) print(np.unique(y_filtered))
代码说明
mask = y != 0:生成一个和y长度相同的布尔数组,对应位置为True表示该样本标签不是0X[mask]/y[mask]:利用NumPy的布尔索引功能,只保留掩码为True的行,直接剔除标签为0的样本- 过滤后
y_filtered只会包含1和2两类标签,实现三类转两类的需求
内容的提问来源于stack exchange,提问作者Mary
相关产品推荐
相关产品推荐

