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

使用np.delete删除Pandas DataFrame行报形状不匹配错误如何解决

问题原因
  • 核心错误是混用了Pandas对象和Numpy操作函数:X_raw、y_raw是Pandas的DataFrame和Series类型,np.delete会先将其转为Numpy数组处理,返回的结果也是Numpy数组,和原Pandas对象的索引结构不匹配,因此触发维度报错。
  • 额外隐患:np.random.randint是有放回抽样,可能生成重复的索引值,导致实际提取的训练样本数少于3、删除行数不符合预期。
  • 对training_indices做reshape操作完全不解决问题,错误和索引的形状无关。
解决方案

方案1:使用Pandas原生方法操作(最稳妥,无类型兼容问题)

首先将抽样逻辑改为无放回抽样,避免重复索引:

# 无放回抽取3个不重复的索引
training_indices = np.random.choice(len(X_raw), size=3, replace=False)
# 提取训练集
X_training = X_raw.iloc[training_indices]
y_training = y_raw.iloc[training_indices]
# 直接用drop删除对应行得到非训练集
X_pool = X_raw.drop(training_indices, axis=0)
y_pool = y_raw.drop(training_indices, axis=0)

方案2:转为Numpy数组后再用Numpy函数操作

如果需要得到Numpy数组类型的非训练集,可以先提取Pandas对象的底层值再操作:

X_pool = np.delete(X_raw.values, training_indices, axis=0)
y_pool = np.delete(y_raw.values, training_indices, axis=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:18:02