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

NumPy三维数组第三维度非连续切片语法报错如何解决

错误原因

你编写的代码报错是因为[1:7,8:11]不符合Python语法规范:Python原生列表不支持直接将多个切片对象作为元素放入方括号,NumPy也没有提供这种直接在索引列表中拼接多段切片的语法。

修正方案

方案1:使用np.r_拼接切片(最简便)

NumPy提供的np.r_可以直接将多个切片、整数、数组合并为一维索引数组,刚好适配你的需求,修正后代码如下:

import numpy as np

# 赋值场景(newarr已预先初始化)
newarr[:, :, 1:10] = oldarr[:, :, np.r_[1:7, 8:11]]

# 如果还未创建newarr,也可以直接提取生成,更简洁
newarr = oldarr[:, :, np.r_[1:7, 8:11]]

np.r_[1:7, 8:11]会自动生成索引数组[1,2,3,4,5,6,8,9,10],长度为9,和左侧[:, :, 1:10]的9个位置长度完全匹配,不会出现维度不兼容问题。

方案2:手动拼接索引数组

如果不想依赖np.r_,也可以手动生成两个区间的索引再拼接:

import numpy as np

# 生成目标索引数组
target_idx = np.concatenate([np.arange(1, 7), np.arange(8, 11)])
newarr[:, :, 1:10] = oldarr[:, :, target_idx]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:24:04