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

如何使用numpy重复跳过数组指定数量元素后提取新数组

实现numpy按固定间隔跳过元素提取数组

问题分析

你现有代码的逻辑差一步就能得到目标结果:你当前的移除逻辑每次只会跳过1个元素,而你的需求是每保留4个元素后跳过2个间隔元素,所以每轮需要移除连续2个索引,而非1个。

实现代码

方法1:掩码法(最直观,效率高)

import numpy as np

num_pixels_per_cell_one_axis = 4
num_cells_per_module_one_axis = 4
inter_cell_sep = 2

# 计算单组总长度:保留元素数 + 跳过元素数
group_length = num_pixels_per_cell_one_axis + inter_cell_sep
# 计算索引总长度
max_items_in_list = num_cells_per_module_one_axis * num_pixels_per_cell_one_axis + (num_cells_per_module_one_axis - 1) * inter_cell_sep

# 生成所有待选索引
all_indices = np.arange(max_items_in_list)
# 生成保留掩码:索引对组长度取模后小于保留长度的即为需要保留的元素
retain_mask = all_indices % group_length < num_pixels_per_cell_one_axis
# 提取保留索引
indices_to_retain = all_indices[retain_mask].tolist()

print(indices_to_retain)
# 输出:[0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21]

方法2:直接生成索引(适合组数固定的场景)

import numpy as np

num_pixels_per_cell_one_axis = 4
num_cells_per_module_one_axis = 4
inter_cell_sep = 2

group_length = num_pixels_per_cell_one_axis + inter_cell_sep
# 生成每组的起始偏移
group_starts = np.arange(num_cells_per_module_one_axis) * group_length
# 每组起始偏移叠加0~3的偏移,展开后得到最终保留索引
indices_to_retain = (group_starts[:, None] + np.arange(num_pixels_per_cell_one_axis)).ravel().tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:07