Python中根据变量num取值生成imgs子集索引的实现方法
实现方法
首先推导索引映射规则:你需要的3个目标索引可以直接通过num乘以10作为起始偏移量,向后取连续3个值即可,对应公式为start = num * 10,目标索引为[start, start+1, start+2]。
注意:按你给出的num取值范围0-4计算,num=4时起始索引为40,而长度为40的
imgs最大索引为39,会出现越界错误。如果确实要支持num=4,需要把imgs的长度调整为至少43,或者确认num的实际有效范围是0-3。
1. 单个num值的场景
如果num是单个0-3的整数,直接按偏移量取数堆叠即可:
import numpy as np # 示例num取值 num = 1 start = num * 10 rgb = np.dstack((imgs[start], imgs[start+1], imgs[start+2]))
2. 更简洁的切片写法
如果imgs的第一维度是索引维度,还可以直接用切片简化写法,避免重复写索引,效果和上述代码完全一致:
start = num * 10 rgb = np.dstack(imgs[start:start+3])
3. num为列表的批量处理场景
如果需要一次性处理多个num值,可以用列表推导式批量生成堆叠结果:
import numpy as np nums = [0,1,2,3] # 生成对应每个num的rgb数组列表 rgb_list = [np.dstack(imgs[n*10 : n*10+3]) for n in nums]
内容的提问来源于stack exchange,提问作者GCGM
相关产品推荐
相关产品推荐

