如何使用线性插值扩展数组

时间:2015-05-04 05:46:59

标签: python arrays interpolation

我想要的是将长度为m的数组扩展为长度为n (n>m)的数组,并线性插入缺失值。

例如,我想将此数组[1,5,1,7]扩展为长度为7的数组,结果应为[1, 3 ,5, 3 ,1, 5 ,7],其中粗体数字来自线性插值。

在Python中有一种简单的方法吗? 提前谢谢。

3 个答案:

答案 0 :(得分:5)

来自numpy的interp函数可以做你想要的。

示例:

>>> xp = [1, 2, 3]
>>> fp = [3, 2, 0]
>>> np.interp(2.5, xp, fp)
1.0
>>> np.interp([0, 1, 1.5, 2.72, 3.14], xp, fp)
array([ 3. ,  3. ,  2.5 ,  0.56,  0. ])

答案 1 :(得分:1)

使用extend

a = [1, 2, 3] a.extend([4, 5]) print (a)

输出:

[1, 2, 3, 4, 5]

您必须将自己的逻辑用于extend

的输入数组

答案 2 :(得分:1)

要交错两个列表,您可以使用:

In [240]: x = [1, 5, 1, 7]

In [241]: y = [3, 3, 5]

In [242]: from itertools import chain, izip

In [243]: list(chain.from_iterable(izip(x, y)))
Out[243]: [1, 3, 5, 3, 1, 5]

如上所述,它会停在较短的列表中。检查this answer是否克服此限制。