我正在寻找一种插值方法,同时将2D numpy数组扩展到任意长度。例如,说我的数组是
array = [0,0,0]
[1,1,1]
[2,2,2]
调用函数后说我想要一个长度为5的数组:
new_array = [0, 0, 0]
[0.5, 0.5, 0.5]
[1, 1, 1]
[1.5, 1.5, 1.5]
[2, 2, 2]
理想情况下,这适用于任何长度的任何数组,以及新的长度。例如,如果我的阵列长度为1000点,我需要它为1500点。有没有办法在Scipy或Numpy中轻松简单地完成这项工作?我查看了scipy.interpolate
模块,但未能看到我如何实现这一目标。任何方向都会非常有帮助。
感谢。
答案 0 :(得分:0)
您可以尝试:
from scipy import interpolate
n = 5
np.column_stack([interpolate.interp1d(c,c)(np.linspace(c[:1,], c[-1:], n)) for c in arr.T])
Out[45]:
array([[ 0. , 0. , 0. ],
[ 0.5, 0.5, 0.5],
[ 1. , 1. , 1. ],
[ 1.5, 1.5, 1.5],
[ 2. , 2. , 2. ]])