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

如何对三维numpy.ndarray沿单轴执行带间隔的一次性切片操作

不可以直接通过原生slice对象相加、或者逗号分隔多个slice的方式一次性完成第一维的多区间切片,原生slice不支持加法运算,逗号分隔的索引会默认对应不同维度,因此才会误裁剪到视频的宽高维度。

你可以通过以下两种方案实现需求:

方案1:用np.r_生成拼接索引(写法最简洁)

np.r_可以把多个切片对象转换为连续的一维索引数组,专门用来处理单维度多区间选择的场景,后续维度用:保留全部值即可,示例代码如下:

import numpy as np
noise_50 = np.ones((422, 480, 640), dtype=np.float64)
# 注意numpy切片为左闭右开,保留26~231帧右边界写232,保留273~371帧右边界写372
retain_idx = np.r_[26:232, 273:372]
n_50 = noise_50[retain_idx, :, :]
print(n_50.shape) # 输出 (303, 480, 640) 符合预期

方案2:分切片后拼接(内存效率更高)

如果你的视频序列帧数量极大,生成全量索引数组会占用额外内存,可以分别截取两个保留区间再沿帧维度拼接,示例代码如下:

part1 = noise_50[26:232, ...]
part2 = noise_50[273:372, ...]
n_50 = np.concatenate([part1, part2], axis=0)

其中...是numpy的省略号索引,等价于写多个:, 可以自动匹配后面所有维度的全选需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:54:04