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

元素为numpy.ndarray的Python列表执行删除操作报错如何解决?

错误解决:无法删除numpy数组元素

报错根因

numpy.ndarray是固定大小的静态数组,不支持Python原生del关键字直接删除内部元素。你外层的trainSet确实是列表,但循环遍历拿到的每个row本身是numpy数组类型,对numpy数组执行del row[1]操作就会触发该错误。

可行解决方案

你可以通过以下两种方案实现删除每个数组的第二列(索引为1的列):

  • 方案1:使用numpy官方提供的delete方法生成新数组,替换列表中原有的数组元素
import numpy as np
# 遍历列表索引,直接替换对应位置的元素
for idx in range(len(trainSet)):
    # 若每个row是二维数组(多列),指定axis=1代表按列删除
    trainSet[idx] = np.delete(trainSet[idx], 1, axis=1)
    # 若每个row是一维数组,删除指定位置元素不需要加axis参数,写法如下:
    # trainSet[idx] = np.delete(trainSet[idx], 1)
  • 方案2:使用切片筛选保留需要的列,性能优于delete方法
for idx in range(len(trainSet)):
    # 二维数组场景:保留除索引1之外的所有列
    trainSet[idx] = trainSet[idx][:, [i for i in range(trainSet[idx].shape[1]) if i != 1]]
    # 一维数组场景:保留除索引1之外的所有元素
    # trainSet[idx] = trainSet[idx][[i for i in range(len(trainSet[idx])) if i != 1]]

两种方案都会生成新的numpy数组替换列表中原来的元素,不需要修改外层列表的结构,符合你的使用场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:15:05