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

有没有NumPy原生方法可实现数组按间隔采样多个连续元素?

多宽度区域采样的高效Numpy实现

你完全可以用Numpy的广播特性构造目标索引,全程无Python层循环,性能比循环+insert的方案提升非常明显,核心逻辑是直接生成所有需要的采样位置,一次性索引原数组即可:

import numpy as np
array = np.arange(0,20000)
samplespace = 5000
n = 3

# 生成所有采样起始点
sample_starts = np.arange(0, len(array), samplespace)
# 广播生成每个起始点对应的n个连续索引,展平后直接索引原数组
sample_indices = (sample_starts[:, np.newaxis] + np.arange(n)).ravel()
# 可选:过滤超出数组长度的索引,避免边界报错
sample_indices = sample_indices[sample_indices < len(array)]

sampledarray = array[sample_indices]
print(sampledarray)
# 输出:[    0     1     2  5000  5001  5002 10000 10001 10002 15000 15001 15002]

方案优势

  • 性能提升显著:原方案中每次调用np.insert都会重新分配内存、复制全量数组,循环多次后开销极高。该方案为纯向量化操作,仅需一次内存分配,处理百万级以上数组时速度比原实现快10~100倍。
  • 易扩展至多维度:高维数组采样仅需要调整索引生成的维度规则,不需要额外引入循环逻辑。
  • 边界兼容:新增的索引过滤逻辑可以兼容原数组长度不是samplespace整数倍、末尾采样区间不足n个元素的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 12:54:07