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

Numpy.delete()无法正确删除指定索引元素的原因及解决方案

1. delete()函数未生效的原因
  • 核心原因是NumPy的np.delete()属于非原地修改函数:它和Python原生列表的.remove()、.sort()这类直接修改原对象的方法逻辑不同,NumPy绝大多数元素增删、维度变换操作都不会改动传入的原始数组,所有计算结果会封装在全新的数组对象中返回。你的代码仅调用了函数、没有接收返回值,原始数组m自然不会发生任何变化。
  • 额外的易踩坑点:即使你正确接收了返回值,如果不指定axis参数,np.delete()会默认先将二维数组展平为一维数组再执行删除,最终得到的是一维结果[1 1],同样不符合你删除整行的预期。
2. 不转换为Python列表的解决方法

你只需要做两处调整即可得到预期结果:

  • 用原变量(或新变量)接收np.delete()返回的新数组对象
  • 传入axis=0参数,指定沿着行维度执行删除(对应删除索引为2的整行)
    修正后的可运行代码:
import numpy as np

m = np.array([[1], [1], [3]])
m = np.delete(m, 2, axis=0)

print(m)

运行上述代码,输出结果就是你预期的[[1] [1]]。

补充说明:如果后续需要删除指定列,只需要将axis参数设置为1,同时传入要删除的列索引即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:48:53