如何对3D数组按第三轴切片删除后半段数据得到指定形状?
Numpy三维数组按维度截断方案
你遇到的语法报错是因为Python原生不支持在列表[]内直接使用a:b格式的切片语法,同时你选择的索引范围也存在逻辑偏差:Python序列为左闭右开规则,要删除3600号及之后的元素,起始值应为3600而非3601。
方案1:直接数组切片(推荐)
不需要调用np.delete,直接通过numpy切片语法截取需要的部分即可,该方法返回数组视图,无额外内存拷贝,性能最优:
new_arr = arr[:, :, :3600]
- 前两个冒号表示前两个维度(对应9、100的维度)保留所有元素
- 最后一个维度
:3600表示取索引0到3599的共3600个元素,输出形状恰好为(9, 100, 3600)
方案2:使用np.delete的正确写法
如果确实需要通过删除操作实现,有两种正确传参方式:
- 传入切片对象(无额外内存开销)
new_arr = np.delete(arr, slice(3600, 7200), axis=2)
- 传入索引范围序列(不推荐大长度范围使用,会生成额外索引列表占用内存)
new_arr = np.delete(arr, range(3600, 7200), axis=2)
内容的提问来源于stack exchange,提问作者Annette
相关产品推荐
相关产品推荐

