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

如何高效将一维数组拉伸至任意尺寸且不进行插值?

一维数组任意尺寸的最近邻拉伸实现(无插值)

我需要将一维数组拉伸至任意目标尺寸,要求采用最近邻匹配(不进行插值计算),具体效果示例如下:

示例1:

>>> my_array
[0,1,8,4]
>>> stretch(my_array, 7)
[0,0,1,1,8,8,4]

示例2:

>>> my_array
[6,3,7,1]
>>> stretch(my_array, 10)
[6,6,3,3,3,7,7,7,1,1]

直观示意:

输入数组:[5,7,9]
拉伸后目标数组:[5,5,7,7,7,9,9]

我目前用了一个朴素的循环方法,功能完全符合要求,但速度极慢——我需要每帧执行数十至数百次该操作:

import numpy as np

def interp(input_list, length):
   out = np.zeros(length, dtype=np.uint)
   for x in range(length):
        out[x] = input_list[int(x * (len(input_list)/length))]
   return out

试过的其他方法都不符合需求:

  • numpy.interp是针对连续函数的插值方法,不适用我这种非连续的最近邻匹配场景
  • numpy.repeat仅支持将数组拉伸为整数倍尺寸,无法适配任意目标长度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 11:57:08