将Matplotlib数组插值为任意长度

时间:2016-08-02 15:36:52

标签: python arrays numpy scipy

我正在寻找一种插值方法,同时将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模块,但未能看到我如何实现这一目标。任何方向都会非常有帮助。

感谢。

1 个答案:

答案 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. ]])