如何高效将一维数组拉伸至任意尺寸且不进行插值?
一维数组任意尺寸的最近邻拉伸实现(无插值)
我需要将一维数组拉伸至任意目标尺寸,要求采用最近邻匹配(不进行插值计算),具体效果示例如下:
示例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
相关产品推荐
相关产品推荐

